Closed Bug 224537 Opened 21 years ago Closed 21 years ago

[FIXr]Handling of 1xx provisional responses not RFC2616-compliant

Categories

(Core :: Networking: HTTP, defect, P2)

x86
Linux
defect

Tracking

()

RESOLVED FIXED
mozilla1.6beta

People

(Reporter: jorton, Assigned: bzbarsky)

Details

Attachments

(1 file, 2 obsolete files)

User-Agent:       Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4.1) Gecko/20031008
Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4.1) Gecko/20031008

Mozilla handles provisional responses with the "100" code correctly, but RFC2616
requires that any 1xx responses are handled the same--section 10.1:

   A client MUST be prepared to accept one or more 1xx status responses
   prior to a regular response, even if the client does not expect a 100
   (Continue) status message. Unexpected 1xx status responses MAY be
   ignored by a user agent.



Reproducible: Always

Steps to Reproduce:
Here's an nph- CGI script you can use with Apache to reproduce it:

#!/bin/sh

printf "HTTP/1.1 101 Blah\r\n"
printf "Header: foo\n"
printf "\r\n"
printf "HTTP/1.1 101 Blee\r\n"
printf "\r\n"
printf "HTTP/1.1 200 OK\r\n"
echo "Server: fish"
echo "Content-type: text/html"
printf "\r\n"
echo "This is content!"

install this as cgi-bin/nph-101 then request it with Mozilla.
Actual Results:  
Mozilla renders:

HTTP/1.1 101 Blee

HTTP/1.1 200 OK
Server: fish
Content-type: text/html

This is content!


Expected Results:  
Mozilla should render just:

This is content!
Confirmed (based on reading the RFC and LXR), but not tested.

I think we just need to change this line in nsHttpTransaction:
http://lxr.mozilla.org/seamonkey/source/netwerk/protocol/http/src/nsHttpTransact
ion.cpp#591

591         // discard this response if it is a 100 continue.
592         if (mResponseHead->Status() == 100) {
593             LOG(("ignoring 100 response\n"));
594             mHaveStatusLine = PR_FALSE;
595             mResponseHead->Reset();
596             return NS_OK;
597         }
Status: UNCONFIRMED → NEW
Ever confirmed: true
Attached patch Something like that? (obsolete) — Splinter Review
Attachment #134722 - Flags: review?(darin)
Comment on attachment 134722 [details] [diff] [review]
Something like that?

r=darin if you update the LOG statement to something like "ignoring 1xx
response" ;)
Attachment #134722 - Flags: review?(darin) → review+
Attached patch Better logging (obsolete) — Splinter Review
Attachment #134722 - Attachment is obsolete: true
Attachment #134728 - Flags: superreview?(darin)
Attachment #134728 - Flags: review?(darin)
Comment on attachment 134728 [details] [diff] [review]
Better logging

no need to log the exact status code.  it is already logged in ParseStatusLine.
 that's why i suggested "ignoring 1xx response\n"

since http logging is enabled by default, we should keep it brief (though of
course it is already super verbose!)
Attachment #134728 - Flags: superreview?(darin)
Attachment #134728 - Flags: superreview+
Attachment #134728 - Flags: review?(darin)
Attachment #134728 - Flags: review+
Attachment #134728 - Attachment is obsolete: true
taking
Assignee: darin → bz-vacation
Priority: -- → P2
Summary: Handling of 1xx provisional responses not RFC2616-compliant → [FIXr]Handling of 1xx provisional responses not RFC2616-compliant
Target Milestone: --- → mozilla1.6beta
Checked in.
Status: NEW → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: