> 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

Reply via email to