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 ourself }
{ because the event handler will eventually call send again. }
{ Sending the message prevent recursive call and stack overflow. }
{ The PostMessage function posts (places) a message in a window's }
{ message queue and then returns without waiting for the }
{ corresponding window to process the message. The message will be }
{ seen and routed by Delphi a litle later, when we will be out of }
{ the send function. }
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