Hi Willy,

That trace is from curl using --verbose, looks like one empty line after
Expect: 100-continue

Here using --trace-ascii it definitely looks like an empty line after

00b7: content-type:application/xml
00d9: Content-Length: 0
00ec: Expect: 100-continue
0102:
== Info: HTTP 1.0, assume close after body
<= Recv header, 26 bytes (0x1a)
0000: HTTP/1.0 502 Bad Gateway
<= Recv header, 25 bytes (0x19)
0000: Cache-Control: no-cache
<= Recv header, 19 bytes (0x13)
0000: Connection: close
<= Recv header, 25 bytes (0x19)
0000: Content-Type: text/html
<= Recv header, 2 bytes (0x2)
0000:
<= Recv data, 107 bytes (0x6b)
0000: <html><body><h1>502 Bad Gateway</h1>.The server returned an inva
0040: lid or incomplete response..</body></html>.
<html><body><h1>502 Bad Gateway</h1>
The server returned an invalid or incomplete response.
</body></html>
== Info: Closing connection #0

I'll try the latest snapshot now.

Thanks,

Matt

On 7 April 2010 13:44, Willy Tarreau <[email protected]> wrote:

> 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