Francois, thanks! This fixed the problem! It's actually in the FAQ: - CloseDelayed
Is in most cases the preferred way. It will post a message to itself to close the TWSocket. This means that the socket closure is done outside the code that calls the CloseDelayed, meaning a while later. The message handler will call Close. - Close Attempt to gracefully close the socket. If there is still some data waiting in the buffers it will try to send it. ***Do not use Close from within any TWSocket events, instead use CloseDelayed.*** Thursday, May 19, 2005, 2:46:47 AM, you wrote: FP> Use CloseDelayed instead of Close. >> Hello Wilfried, >> >> Sure. Below is my event handler code. Hope I'm doing something >> wrong, otherwise, it's really strange. TProxyChecker is the owner >> object of the TProxySocket object array. TProxySocket is derived >> from TWSocket. >> >> procedure TProxyChecker.WSocketDataAvailable(Sender: TObject; ErrCode: Word); >> var s: String; >> begin >> if ErrCode = 0 then >> with TProxySocket(Sender) do >> begin >> s := ReceiveStr(); >> Log(s); >> Close(); >> end; >> end; >> >> The destination server is a commercial http proxy server. >> I tried using #13#10 and #13#10#13#10, I different strings >> read back from ReceiveStr. But the second string includes >> the first string in both cases. So it shouldn't be the server >> sending the string twice. >> >> BTW, I'm using the latest ICS. >> >> -- >> Best regards, >> Jack >> >> Wednesday, May 18, 2005, 3:31:32 PM, you wrote: >> >> WM> Hello Jack, >> >> WM> Can you show your OnDataAvailable handler ? >> WM> Eventually download SocketSpy from 'user made' page and 'hang' it >> WM> between client and server. Then you see exacly what is sent by server. >> >> WM> --- >> WM> Rgds, Wilfried >> WM> http://www.mestdagh.biz >> >> WM> Wednesday, May 18, 2005, 20:48, Jack wrote: >> >> >> Hello Francois and all, >> >> >> I'm using a TWSocket client in LineMode with LineEnd set to #13#10. >> >> I connect to a HTTP proxy server using CONNECT command. I then get >> >> a reply back from the HTTP proxy from ReceiveStr() >> >> >> Things look OK except that I am receiving the data from the first >> >> ReceiveStr() call twice. I get two WSocketDataAvailable messages for >> >> 3 lines in the HTTP response: >> >> >> Line 1: HTTP/1.0 200 Connection established >> >> Line 2: Proxy-agent: Proxy+ 3.00 >> >> Line 3: (Blank line) >> >> >> However, I'm getting the first ReceiveStr() result twice, see below: >> >> I'm getting "HTTP/1.0 200 Connection established" twice: >> >> >> 5/18/2005 2:36:43 PM WSocketDataAvailable idx=0 addr=127.0.0.1:4480 >> >> ErrCode=0 >> >> 5/18/2005 2:36:43 PM HTTP/1.0 200 Connection established >> >> 5/18/2005 2:36:43 PM >> >> 5/18/2005 2:36:43 PM >> >> 5/18/2005 2:36:43 PM WSocketDataAvailable idx=0 addr=127.0.0.1:4480 >> >> ErrCode=0 >> >> 5/18/2005 2:36:43 PM HTTP/1.0 200 Connection established >> >> Proxy-agent: Proxy+ 3.00 >> >> >> >> I then changed LineEnd to #13#10#13#10, I still get the result of >> >> the first ReceiveStr() twice, this time the result is two lines: >> >> >> HTTP/1.0 200 Connection established >> >> Proxy-agent: Proxy+ 3.00 >> >> (Blank line) >> >> >> 5/18/2005 2:40:11 PM WSocketDataAvailable idx=0 addr=127.0.0.1:4480 >> >> ErrCode=0 >> >> 5/18/2005 2:40:11 PM HTTP/1.0 200 Connection established >> >> Proxy-agent: Proxy+ 3.00 >> >> >> >> 5/18/2005 2:40:11 PM >> >> 5/18/2005 2:40:11 PM >> >> 5/18/2005 2:40:11 PM WSocketDataAvailable idx=0 addr=127.0.0.1:4480 >> >> ErrCode=0 >> >> 5/18/2005 2:40:11 PM HTTP/1.0 200 Connection established >> >> Proxy-agent: Proxy+ 3.00 >> >> >> >> It seems that, somehow the first ReceiveStr() didn't remove the data >> >> from the buffer. Or am I missing anything? >> >> >> >> -- >> >> Best regards, >> >> Jack >> >> >> >> >> >> >> -- >> 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