Maurizio Lotauro wrote:
> Scrive Arno Garrels <[EMAIL PROTECTED]>:
>> DZ-Jay wrote:
>>> we should try to replicate the behaviour in HttpCli: perhaps adding
>>> a new machine state that instead of re-sending when 401 is
>>> detected, it makes sure that the body has been sent completely, and
>>> if not, it delays re-sending until it does.
>> My attempt below works with the link Maurizio provided. Don't know
>> whether it works with a proxy and/or NTLM etc. (forgot everything
>> about it) so it's most likely buggy but might be worth testing and
>> fixing it ;-) 
> Unfortunately I'm still using an old version of HttpProt.pas (1.86),
> and it seems different from yours, at least in the StateChange
> procedure. Can you send your HttpProt.pas?

It's from Icsv7 but the snippets should match v6 as well. 

> Are you sure about the SocketDataSent procedure? If len <=0 then the
> SendStream has already reached the end. 

That's the intention, before the send stream is not sent we cannot
put anything else into the send buffer. 

> And I would be very surprised
> if FReqStream has a size > 0.

It works in a simple test with the link you provided. 
Because of:

procedure THttpCli.SendRequest(const Method, Version: String);
        TriggerBeforeHeaderSend(Method, Headers);
        for N := 0 to Headers.Count - 1 do
=>      if not FDelayRequest then begin
            FCtrlSocket.PutDataInSendBuffer(FReqStream.Memory, FReqStream.Size);
            FCtrlSocket.Send(nil, 0);
=>      end;

However all depends on the new flag FDelayRequest that might have to
be set and cleared at different places in v5 or with NTLM or a proxy
connection as well? It's not a fix so far but shows the principle of
how the final fix can be implemented!

> Bye, Maurizio.
> ----------------------------------------------------
> This mail has been sent using Alpikom webmail system
To unsubscribe or change your settings for TWSocket mailing list
please goto
Visit our website at

Reply via email to