The issue is caused by having a superfluous
carriage return being sent in the HTTP request
I've reproduced the problem using ICS components, the issue relates to
the THttpConnectionState mechanism which was changed a few years ago by
Bjornar Nielsen to improve pipelined requests, where a new command is
sent before the old one is finished.
The extra blank line is treated as a new request and causes lots of
internal variables to be cleared which stops the current request
completing properly. This also explains some blank logging lines I
sometimes see in my web server logs, because the method and path are
cleared before the request completes and is logged, below server log
lines before and after the fix, showing 64K sent before and 20M after.
2012-07-11 16:56:26 WebAppTelecom PC19 192.168.1.119 - 80 - pc19
HTTP/1.00 65693 0 0
2012-07-11 20:02:51 WebAppTelecom PC19 192.168.1.119 GET
/testing/speed20meg.zip - 80 - pc19 HTTP/1.0 Mozilla/4.0+(compatible;+ICS)
telecom.magenta 200 20450787 394 172
I've fixed my local copy of ICS V8, which version are you using?
My only concern is whether we are properly supporting pipelining. I don't
believe pipelining works properly at the moment, but have no easy way to
test it.
To support pipelining, I think more changes are needed to prevent the new
commands being accepted while the old request is being processed, but
this is more complex than my current fix and needs a means to send
pipelined commands. Does anyone know an HTTP client that uses pipelining?
Angus
--
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