Hi folks,

we are experiencing a popular issue with MS .NET clients sending "Expect: 
100-continue"
and Tomcat failing with HTTP 505.
We use Apache Tomcat 6.0.41 with APR connector on a corporate network.

The request look like this in Wireshark:

1. Client sends empty request with one TCP packet
2. Tomcat responds with 401 within 20 to 30 ms
3. Client sends another TCP packet with the request body now (401 has been 
ignored)
4. While debugging the APR Connector I see that request.getProtocol is invoked 
and
  the message bytes contain the chomped XML with a trailing GET request. This 
leads to a 505.

I read several resources as well as bug reports in HTTPd, Tomcat and JBoss 
spread over the
last couple of years. The RFC 7231 [1] says:

Requirements for clients:
o  A client that sends a 100-continue expectation is not required to
   wait for any specific length of time; such a client MAY proceed to
   send the message body even if it has not yet received a response.
   Furthermore, since 100 (Continue) responses cannot be sent through
   an HTTP/1.0 intermediary, such a client SHOULD NOT wait for an
   indefinite period before sending the message body.

The statement sheds some light on the issue but does not fully answer the 
question.
As far as I understand the client has received the final status (401) from the 
server but did not
evaluate this. In my opinion, the client seems to be broken.

The resources suggested to disable the header which we did and it did work 
indeed, the strange
thing is that the client in .NET should wait for 350 ms before it fires the 
body which it doesn't.

Can somebody tell me who is misbehaving against the RFC? Is disabling "Expect: 
100-continue" the way
to go? I am pretty fine with that if Tomcat's behavior is RFC-compliant.

These are my resources:

https://social.msdn.microsoft.com/Forums/en-US/5c576a2d-2f13-485c-8ada-b4c3ee127d3c/http-protocol-errors-when-combining-webclient-uploads-and-digest-authentication?forum=ncl
https://issues.apache.org/bugzilla/show_bug.cgi?id=47087
http://blogs.msdn.com/b/fiddler/archive/2011/11/05/http-expect-continue-delays-transmitting-post-bodies-by-up-to-350-milliseconds.aspx


Regards,

Michael

[1] http://tools.ietf.org/html/rfc7231#section-5.1.1

PS: If someone of the project members is interested in the Wirshark pcap file, 
I'll be happy
to send you that to your @apache.org email address.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to