Hello, In my case, the below addition was helpful for multi-part aborted connections:
procedure TFtpServer.FreeCurrentPasvPort(AClient : TFtpCtrlSocket); var CurrentPort : Integer; ErrorCode : Integer; begin { FLD changed following lines, } { FreeCurrentPasvPort might be called when the socket is already closed! } if AClient.DataSocket.State = wsClosed then Val(AClient.DataSocket.Port, CurrentPort, ErrorCode) else Val(AClient.DataSocket.GetXPort, CurrentPort, ErrorCode); if (CurrentPort > 0) and // SubZero 23.10.2006 (CurrentPort >= FPasvPortRangeStart) and (CurrentPort <= (FPasvPortRangeStart + FPasvPortRangeSize)) then begin PBoolean(PChar(FPasvPortTable) + SizeOf(Boolean) * (CurrentPort - FPasvPortRangeStart))^ := FALSE; end; AClient.PassiveMode := FALSE; // FLD 29.12.05 end; Francois, I know you said you are busy but please apply this in your code as well. At least it is harmless for anybody. Best Regards, SZ www.fastream.com -- To unsubscribe or change your settings for TWSocket mailing list please goto http://www.elists.org/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be