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


Reply via email to