Scrive Maurizio Lotauro <[EMAIL PROTECTED]>: > Scrive Arno Garrels <[EMAIL PROTECTED]>: > > > Maurizio Lotauro wrote:
[...] > > Looking into THttpCli.SocketDataAvailable, OnDataPush seems to be > > triggered in this case. LastResponse should the contain 401/407, > > possibly you handle this case from that event? > > Unfortunately no because FState is httpWaitingHeader. Now I'm trying > to catch when the status code is set to 401, but I need at least the whole > header. > Then I should "emulate" what happen when the 401 is received after the whole > send. It doesn't seem easy... This is what I tried. In the THttpCli.TriggerHeaderEnd procedure I added on top: if ((FStatusCode = 401) or (FStatusCode = 407)) and Assigned(FSendStream) then begin Inc(FSentCount, FSendStream.Size - FSendStream.Position); FSendStream.Seek(0, soFromEnd); end; but it still doesn't work. Looking with WireShark this is what happen: - the client send a chunk of 8193 byte (the size of the send buffer) - the server answer with 401 - the client send a second chunk of 8193 byte (from the first post) - the client send a new post containing the authentication credential - the server answer with 414 before the client ends the transmission and close the connection. I think that the problem lies on the transmission of the second chunk. In the TriggerHeaderEnd the FSendStream.Position is 16386, so the second chunk is already "on the way". How I can avoid the second chunk or tell the server that I'm starting a new send? Bye, Maurizio. ---------------------------------------------------- This mail has been sent using Alpikom webmail system http://www.alpikom.it -- 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