> I call abort() when client > socket is detected to be closed between each request and wait until > requestdone, pumping messages in a while loop. Of course you should > by now know that I use MT = true.
If you need a true blocking method Abort that triggers RequestDone before return you may want to add this change (tested only briefly): procedure THttpCli.Abort; [..] <= // StateChange(httpReady); { 13/02/99 } => FState := httpReady; => TriggerStateChange; => WMHttpRequestDone(Msg); { Synchronous operation ! } end; I guess this is a fix since Abort is/was intended to behave blocking: "procedure Abort; { Synchrounous blocking Abort }". AFAIR, TriggerRequestDone has been changed to post a message, I think it triggered the event directly in some old versions. Fastream Technologies wrote: > Here is a question for you: In my derived class httpClient, I have > some code such as, > > void __fastcall httpClient::SetReady() > { > if(alreadySetReady) > return; > alreadySetReady = true; // reset before each get, head, post... > PostMessage(FHandle, FMsg_WM_HTTP_SET_READY, 0, 0); > } > //--------------------------------------------------------------------------- > Could this function pose a problem? I use this overriden function > because otherwise there is no deterministic way to know the end of > message calls in the component which is weak design since this causes > problems in MT environment where you need to know the "end" to send > to pool in the main thread. Hope you see the point. Looks at least rather suspicious. -- Arno Garrels > > Regards, > > SZ > > On Thu, May 29, 2008 at 1:01 PM, Fastream Technologies > <[EMAIL PROTECTED]> wrote: > >> Unfortunately after your fix I am also unable to reproduce the bug >> out of my own project in the ICS demo. :-(( Not sure what to do. >> What I can tell you: in my project, I call abort() when client >> socket is detected to be closed between each request and wait until >> requestdone, pumping messages in a while loop. Of course you should >> by now know that I use MT = true. >> >> SZ >> >> On Thu, May 29, 2008 at 11:25 AM, Arno Garrels >> <[EMAIL PROTECTED]> wrote: >> >>> Fastream Technologies wrote: >>>> For you, here is the list of events called with fast HEADs in >>>> order: >>>> >>>> - OnHeaderData // header data here is "0". >>>> - OnHeaderEnd >>>> - OnSessionClosed >>>> - OnHeaderData // header correct >>>> - OnHeaderEnd // document could not be retrieved since connection >>>> closed Regards, >>> >>> I cannot reproduce this issue in a simple test application with my >>> little fix applied (running a loop of 20 Head/Get requests). >>> Please send me a simple project that demonstrate the problem >>> including the binary, I prefer a Delphi project, but it may be BCB >>> as well. >>> >>> -- >>> 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