twsoc...@kglt.net wrote: > I'll start by saying that I am using the daily snapshot of 12/18/2011, > Delphi 7.1, Win XP SP3 all patches as of 12/18/2011. > > using > TFtpCli I get a 500 error on a Quit even though the server returns a > 221 response to the quit. I've tracked it down to > TCustomFtpCli.ControlSocketSessionClosed > > I changed: > > if FRequestType ftpRqAbort then begin > > To: > > if > (FRequestType ftpRqAbort) and (FRequestType ftpQuitAsync) then begin > > and the problem is resolved. > > Please note that the > machine the program runs on is a 3.4g P4 with Gigabit networking to a > DS3 backbone. And this is a timing related problem. I can not > reproduce the error on my development machine.
Seems the same problem I noticed on OSX recently, please try the following fix as in the IPv6 branch for Windows as well, does it work for you? {code} procedure TCustomFtpCli.ControlSocketSessionClosed( Sender : TObject; ErrCode : Word); var LClosedState : TFtpState; begin LClosedState := FState; {.$IFDEF POSIX} if ((FRequestType = ftpQuitAsync) or (FFctPrv = ftpFctQuit)) and (FState = ftpInternalReady) and (ErrCode <> 0) then ErrCode := 0; { Sometimes ErrCode ECONNRESET for unknown reason when TFtpServer and client are running on the same host. Seen on MacOS, however when QUIT response has been received we may safely ignore all possible errors. } {.$ENDIF} if FConnected then begin FConnected := FALSE; if FState <> ftpAbort then StateChange(ftpNotConnected); if Assigned(FOnSessionClosed) then FOnSessionClosed(Self, ErrCode); end; if FState <> ftpAbort then StateChange(ftpInternalReady); if FRequestType <> ftpRqAbort then begin if (ErrCode <> 0) or ((FRequestType <> ftpQuitAsync) and (LClosedState in [ftpWaitingBanner, ftpWaitingResponse])) then begin FLastResponse := '500 Control connection closed - ' + WSocketGetErrorMsgFromErrorCode(ErrCode); FStatusCode := 500; FRequestResult := FStatusCode; { 06 apr 2002 } SetErrorMessage; end; TriggerRequestDone(FRequestResult); end; end; {code} -- 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