Anton Sviridov wrote:
> Having looked at the OverbyteIcsWSocket unit, I've noticed many IFDEF
> CLR which probably might be removed. 
> 
> First of all, I think it's better to turn all buffers from PAnsiChar
> / array of AnsiChar to TBytes, as it is recommended by Embarcadero
> (though one would declare this type for compilers up to BDS2006).

When Unicode Delphi came out the goal was to port ICS with minimum
changes, I guess the same was true when Delphi .Net came out.
 
> 
> Second, I see numerous cases of copying by for loops in CLR code,
> while on WIN32 it's done by Move. I also noticed
> System.Buffer.BlockCopy(FRcvdPtr, 0, Buffer, 0, FLineLength); in just
> one place instead of for loop, maybe this function should be used?

Probably. AFAIK the .Net code was never finished in ICS v7/v6 and
currently does not work either. 
 
> 2)
>    function    Send({$IFDEF CLR} const {$ENDIF} Data : TWSocketData;
> Len : Integer) : Integer; overload; virtual; 
> and
>    function    SendTo(Dest       : TSockAddr;
>                       DestLen    : Integer;
>                       {$IFDEF CLR} const {$ENDIF} Data : TWSocketData;
>                       Len        : Integer) : Integer; virtual;
> 
> why not declare it const for all platforms?

Because it did not compile with C++Builder, and nobody wanted to touch 
the .Net code.

> 
> 3)
> in WSocket_accept there's too much conditions, even for D1 - I
> thought D1-D6 is unsupported in v7 ? 

Indeed, they will be removed step by step.
 
> Some other remarks:
> 
> 4)
> function AddOptions(Opts: array of TWSocketOption): TWSocketOptions;
>        Result := Result + [Opts[I]];
> =>
>        Include(Result, Opts[I]);
> as it is faster

True, however unless this was called in a loop many many times it's
IMO minor.
 
> 5)
> function  RemoveOption(
>    Result := OptSet - [Opt];
> =>
>        Exclude(Result, Opt);
> the same

The correct code was :
Result := OptSet;
Exclude(Result, Opt);

Would this be traceable faster?   

> 
> 6) (possibly bug)
>    for I := Low(LocalSockName.sin_zero) to
>        High(LocalSockName.sin_zero) do LocalSockName.sin_zero[0] :=
> #0; 
> 
> LocalSockName.sin_zero[i] ?

Indeed, however that's in the .Net code.
 
> 7)
> procedure TCustomSocksWSocket.SocksDoAuthenticate;
>    TempS  := AnsiString(FSocksPassword);
>    TempS  := AnsiString(FSocksUsercode);
> 
> Looks like one couldn't use Unicode characters in Socks login? Is it
> mistake or protocol restriction? 

It's not a mistake but simply backwards compatible.
I did not find anything in RFC of how to handle
non-ASCII chars with socks authentication, did you? 
 
> 
> 8)
>        Phe := PHostent(@FDnsLookupBuffer);
>        if phe <> nil then begin
> 
> Phe currently never could be nil, as FDnsLookupBuffer is declared as
> static array field 

True.

--
Arno Garrels
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to