Bill, Bill, and Remy -- thanks for your help. I've raised bug 38030 --
http://issues.apache.org/bugzilla/show_bug.cgi?id=38030

FYI, I tested TC behavior with an HTTP 1.1 POST without a message body and
no content-length. It worked, properly. However, I noticed an 8 second delay
between request and response. I assume TC was blocking in a socket read
until it timed out... That doesn't seem very desirable...

Possible to target the fix for 5.5.14?

--kevan

On 12/22/05, Bill Stoddard <[EMAIL PROTECTED]> wrote:
>
> Bill Barker wrote:
> > "Bill Stoddard" <[EMAIL PROTECTED]> wrote in message
> > news:[EMAIL PROTECTED]
> >
> >>Remy Maucherat wrote:
> >>
> >>>Bill Stoddard wrote:
> >>>
> >>>
> >>>>Nope, that's incorrect.
> >>>> From RFC2616, the official HTTP standard definition:
> >>>>
> >>>>   The presence of a message-body in a request is signaled by the
> >>>>   inclusion of a Content-Length or Transfer-Encoding header field in
> >>>>   the request's message-headers.
> >>>>
> >>>>A bodyless POST request w/o a TE or CL header field is permitted by
> >>>>RFC2616. Of course, if the POST really does have a body, then bad
> things
> >>>>are guaranteed to happen.
> >>>
> >>>
> >>>It's a HTTP/1.0 request. Is that still true ?
> >>>
> >>
> >>Yes, HTTP/1.1 servers can handle HTTP/1.0 requests.  Here's an
> experiment
> >>to try.
> >>telnet www.apache.org 80
> >>then type in:
> >>POST /foo/bar HTTP/1.0
> >><enter>
> >><enter>
> >>
> >>watch what happens. Apache httpd handles the request properly.
> >>
> >
> >
> > Tomcat handles it much the same way for for a 404 ;-).
>
> Got me, bad example ;-)
>
> >
> > However, I'm guessing that Httpd sets up an EOS-only bucket-brigade
>
> Yep, your right. HTTP input filter sets EOS on the input stream if a CL or
> TE header is not received. The
> input filter does not consider the HTTP method (POST, GET, et. al).
> Consumers of the input stream will know
> they are done when they read the EOS bucket off the stream.
>
> > Given that the request is malformed under RFC1945, so Tomcat probably
> should
> > do the same thing (which is basically what Remy's patch does).
>
> Humm... this is straight from from RFC1945:
>
> -//-
> Status of This Memo
>
>     This memo provides information for the Internet community.  This memo
>     does not specify an Internet standard of any kind.  Distribution of
>     this memo is unlimited.
>
> IESG Note:
>
>     The IESG has concerns about this protocol, and expects this document
>     to be replaced relatively soon by a standards track document.
>
> -//-
>
> so I am not sure of the utility in quoting RFC1945. I suspect (but don't
> know for sure) the 'standards track
> document' being referenced turned out to be RFC2069 followed by RFC2616.
>
> I am not convinced the request is malformed by any recognized standard,
> but we can disagree on this point so
> long as we all agree:
> 1. Tomat is an HTTP/1.1 compliant server
> 2. An HTTP/1.1 compliant server should be able to accept POST w/o a body
> 3. It is acceptable for an HTTP client to tell an HTTP/1.1 compliant
> server that it has no body by omitting
> the TE and CL header fields (regardless of HTTP method type).
>
> Assuming the request really is malformed, the dictum "Be permissive in
> what you accept, strict in what you
> send" would suggest we not pedantically fail this particular request as
> malformed simply because it sent
> "HTTP/1.0" in it's version field.
>
> Bill
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

Reply via email to