Hi Matt, On Wed, Apr 07, 2010 at 11:10:58AM +0100, Matt wrote: > When using curl :- > * Server auth using Digest with user 'su' > > PUT ............. HTTP/1.1 > > User-Agent: curl/7.19.5 (i486-pc-linux-gnu) libcurl/7.19.5 OpenSSL/0.9.8g > zlib/1.2.3.3 libidn/1.15 > > Host: .......... > > Accept: */* > > content-type:application/xml > > Content-Length: 0 > > Expect: 100-continue > > > < HTTP/1.1 100 Continue > * HTTP 1.0, assume close after body > < HTTP/1.0 502 Bad Gateway > < Cache-Control: no-cache > < Connection: close > < Content-Type: text/html (...)
Where was this trace caught ? Are you sure there was no empty line after the "HTTP/1.1 100 Continue" ? That would be a protocol error, but maybe it's just an interpretation of the tool used to dump the headers. > The Jetty server throws an exception :- > HTTP/1.1 PUT > Request URL: http://.......... > User-Agent: curl/7.19.5 (i486-pc-linux-gnu) libcurl/7.19.5 OpenSSL/0.9.8g > zlib/1.2.3.3 libidn/1.15 > Host: ............ > Accept: */* > Content-Type: application/xml > Content-Length: 0 > Expect: 100-continue > X-Forwarded-For: ........... > Connection: close > Querystring: null > -ERROR Authenticator Authenticator caught IO Error when trying > to authenticate user! > org.mortbay.jetty.EofException > org.mortbay.jetty.HttpGenerator.flush(HttpGenerator.java:760) > org.mortbay.jetty.AbstractGenerator$Output.flush(AbstractGenerator.java:565) > org.mortbay.jetty.HttpConnection$Output.flush(HttpConnection.java:904) > org.mortbay.jetty.AbstractGenerator$Output.write(AbstractGenerator.java:633) > org.mortbay.jetty.AbstractGenerator$Output.write(AbstractGenerator.java:586) > org.mortbay.jetty.security.DigestAuthenticator.authenticate(DigestAuthenticator.java:131) > ........... > Caused by: java.nio.channels.ClosedChannelException > ........... > > HA Proxy debug:- > accept(0007)=0008 from [...........:49194] > clireq[0008:ffff]: PUT ........... HTTP/1.1 > clihdr[0008:ffff]: User-Agent: curl/7.19.5 (i486-pc-linux-gnu) > libcurl/7.19.5 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.15 > clihdr[0008:ffff]: Host: ................ > clihdr[0008:ffff]: Accept: */* > clihdr[0008:ffff]: content-type:application/xml > clihdr[0008:ffff]: Content-Length: 0 > clihdr[0008:ffff]: Expect: 100-continue > srvrep[0008:0009]: HTTP/1.1 100 Continue > srvcls[0008:0009] > clicls[0008:0009] > closed[0008:0009] > > Making sure that both httpclose and http-server-close are absent causes the > requests to work. This would make me think about another funny behaviour in the server, related to "Connection: close". Could you try latest 1.4 snapshot and add "option http-pretend-keepalive" ? It is possible that the server disables handling of the 100-continue when it sees a close (which is not related at all, but since this is the only difference, we can think about another home-made HTTP implementation). Regards, Willy