> Is this normal behavior or ? I can't tell you. And this would need too much analysis to give a good answer. Unfortunately I have not time (I'm busy with ICS-SSL). Sorry.
-- [EMAIL PROTECTED] http://www.overbyte.be ----- Original Message ----- From: "Guillaume MAISON" <[EMAIL PROTECTED]> To: "ICS support mailing" <twsocket@elists.org> Sent: Friday, May 20, 2005 5:39 PM Subject: [twsocket] [HELP] FTP Server possible bug ? > Le 20 May 2005 à 16:31, Guillaume MAISON a écrit: > > > Unless there's something obvious, i don't know why the ftpserver opens data for connection > > though i've set DelayedSend:=True in the OnGetProcessing event ? > After more and more debugging, i've found something : > when saying delayedSend to true, the data is, effectively, not sent. > But, the ftpserver keeps going on telling back to the client '150 opening data, etc...'. > > the thing is that doing so, it fires the function TCustomWSocket.Send(Data : Pointer; Len : Integer) : integer; > Which, in turns, post a message : > if bAllSent then begin > { We post a message to fire the FD_WRITE message wich in turn will } > { fire the OnDataSent event. We cannot fire the event lf } > { because the event handler will eventually call send } > { Sending the message prevent recursive call and stack erflow. } > { The PostMessage function posts (places) a message in a indow's } > { message queue and then returns without waiting for } > { corresponding window to process the message. The message will be } > { seen and routed by Delphi a litle later, when we will be out f } > { the send } > PostMessage(Handle, > WM_ASYNCSELECT, > FHSocket, > MakeLong(FD_WRITE, 0)); > end; > > This message is then received by the procedure TCustomWSocket.Do_FD_WRITE(var msg: TMessage); > the thing is that, i have at the same time my thread which is kindly retrieving data, but has nothing to send yet... > this Do_FD_WRITE procedure triggers the procedure TFtpServer.ClientRetrDataSent(Sender : TObject; AError : Word); > var > Client : TFtpCtrlSocket; > Data : TWSocket; > begin > Data := TWSocket(Sender); > Client := TFtpCtrlSocket(Data.Owner); > > if Client.AbortingTransfer then > Exit; > > try > { Trigger the user event for the received data } > ==> TriggerRetrDataSent(Client, Data, AError); > > here is the problem... When this procedure (TriggerRetrDataSent) is executed, it sends back to the client the fact that > the file has been sent. But the Client.Datastream is empty, so my client application has retrieved a file, but empty. > But as i think that i have received a file, i go on my process (disconnecting ==> which means on server side > that the client is destroyed and i have exceptions within my thread) and analyzing the received (empty) content. > > Is this normal behavior or ? > > Guillaume MAISON > ----- > Guillaume MAISON - [EMAIL PROTECTED] > 83, Cours Victor Hugo > 47000 AGEN > Tél : 05 53 87 91 48 - Fax : 05 53 68 73 50 > e-mail : [EMAIL PROTECTED] - Web : http://nauteus.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 > -- 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