Closed Bug 441496 Opened 17 years ago Closed 16 years ago

Use server push (multipart/x-mixed-replace) with Safari

Categories

(Bugzilla :: Query/Bug List, defect)

defect
Not set
normal

Tracking

()

VERIFIED WONTFIX

People

(Reporter: gerv, Assigned: gerv)

References

Details

Attachments

(1 file, 4 obsolete files)

As noted in bug 188712, It seems Safari has supported multipart/x-mixed-replace since 2.0.2 in 2005: http://webkit.org/blog/32/webkit-fixes-in-safari-202-mac-os-x-1043/ We should remove the check which prevents Safari getting the intermediate page. Gerv
Attached patch Patch v.1 (obsolete) — Splinter Review
Assignee: query-and-buglist → gerv
Status: NEW → ASSIGNED
Attachment #326442 - Flags: review?
Attachment #326442 - Flags: review? → review?(timeless)
Comment on attachment 326442 [details] [diff] [review] Patch v.1 sorry. sniff for webkit 2+. i use 10.3.9 which means i can't run safari 2, which means you're going to break me. but i do appreciate the review request and will grant a positive review for one which properly handles the distinction :).
Attachment #326442 - Flags: review?(timeless) → review-
Attached patch Patch v.2 (obsolete) — Splinter Review
OK, for those still using Safari 1... Gerv
Attachment #326442 - Attachment is obsolete: true
Attachment #326443 - Flags: review?(timeless)
Comment on attachment 326443 [details] [diff] [review] Patch v.2 >+$ENV{'HTTP_USER_AGENT'} =~ /WebKit\/(\d+)/; >+my $webkitversion = $1; If the UA doesn't match this regexp, I suspect $1 would still contain any previous result from an older regexp (I cannot test right now because I'm not on my PC). You should rather write my $foo; if ($ENV{...} =~ /.../) { $foo = $1; } to be safe.
Attachment #326443 - Flags: review?(timeless) → review-
Attached patch Patch v.3 (obsolete) — Splinter Review
Attachment #326443 - Attachment is obsolete: true
Attachment #326658 - Flags: review?(LpSolit)
Attached patch Patch v.4 (obsolete) — Splinter Review
Slightly embarrassing that this has taken four goes... Gerv
Attachment #326658 - Attachment is obsolete: true
Attachment #326699 - Flags: review?(LpSolit)
Attachment #326658 - Flags: review?(LpSolit)
Attached patch Patch v.5Splinter Review
Words fail me. Gerv
Attachment #326699 - Attachment is obsolete: true
Attachment #326702 - Flags: review?(LpSolit)
Attachment #326699 - Flags: review?(LpSolit)
Comment on attachment 326702 [details] [diff] [review] Patch v.5 Looks good. r=LpSolit assuming you tested it with Safari.
Attachment #326702 - Flags: review?(LpSolit) → review+
Flags: approval3.2+
Flags: approval3.0+
Flags: approval+
Target Milestone: --- → Bugzilla 3.0
I can't test it with Safari; I don't have a Mac. Do you? Gerv
Pyrzak has a Mac! :-)
I can confirm that it works with Safari 3.1.1 (5525.20) on my own Mac. I patched buglist.cgi, and search results still came up just fine. Note, however, that I have few enough bugs that I don't actually see the intermediate page, but I assume we're pushing through it. I tried to use our BrowserCam account to verify that it will still work with Safari 1.x. Alas, their Macs don't allow use of ssh, without which I cannot reach my test install. If this patch is deployed in a publicly accessible version somewhere, I would be happy to try it out.
Patch now deployed on https://landfill.bugzilla.org/bug441496/index.cgi Feel free to test :-) Gerv
I used the url above. I searched for the word test and nothing came back. At all. And the page appeared to be done loading. I also was unable to view the source. I am using Safari version 3.1.1 (5525.18)
Hmm, same thing here, also with 3.1.1. Poking my head into the traffic flow, it looks like there's an internal server error being returned without a body. I switched Safari's UA string to a couple of 1.x versions and got the same result. Here's the full request: Start Watching Built-in Ethernet Traffic, with Filter HTTP TCP packet from 192.168.0.26:56862 to 63.245.210.140:http(80) (0 bytes) IP Header: Version: 4; Header Length: 20; TOS: 0; Packet Length: 64 Identifier: 55351; Do Not Fragment; Fragment Offset: 0 Time To Live: 64; Protocol: 6; Header Checksum: 0 TCP Header: Sequence Number: 2857218913; Acknowledgment Number: 0 Header Length: 44; Code Bits: SYN; Window: 65535 Checksum: 54134; Urgent Pointer: 0 24 bytes of TCP options: Maximum Segment Size: 1460 Window Scale: 2**1 Timestamps: 511238997, 0 SACK Permitted TCP packet from 63.245.210.140:http(80) to 192.168.0.26:56862 (0 bytes) IP Header: Version: 4; Header Length: 20; TOS: 0; Packet Length: 60 Identifier: 0; Do Not Fragment; Fragment Offset: 0 Time To Live: 53; Protocol: 6; Header Checksum: 29304 TCP Header: Sequence Number: 615939478; Acknowledgment Number: 2857218914 Header Length: 40; Code Bits: SYN ACK; Window: 5792 Checksum: 20127; Urgent Pointer: 0 20 bytes of TCP options: Maximum Segment Size: 1460 SACK Permitted Timestamps: 276045503, 511238997 Window Scale: 2**7 TCP packet from 192.168.0.26:56862 to 63.245.210.140:http(80) (0 bytes) IP Header: Version: 4; Header Length: 20; TOS: 0; Packet Length: 52 Identifier: 61211; Do Not Fragment; Fragment Offset: 0 Time To Live: 64; Protocol: 6; Header Checksum: 0 TCP Header: Sequence Number: 2857218914; Acknowledgment Number: 615939479 Header Length: 32; Code Bits: ACK; Window: 33304 Checksum: 54122; Urgent Pointer: 0 12 bytes of TCP options: Timestamps: 511238997, 276045503 TCP packet from 192.168.0.26:56862 to 63.245.210.140:http(80) (568 bytes) IP Header: Version: 4; Header Length: 20; TOS: 0; Packet Length: 620 Identifier: 58196; Do Not Fragment; Fragment Offset: 0 Time To Live: 64; Protocol: 6; Header Checksum: 0 TCP Header: Sequence Number: 2857218914; Acknowledgment Number: 615939479 Header Length: 32; Code Bits: ACK PUSH; Window: 33304 Checksum: 54690; Urgent Pointer: 0 12 bytes of TCP options: Timestamps: 511238997, 276045503 Data: GET«spc»/bug441496/buglist.cgi?query_format=specific&order=relevance+desc&bu g_status=__open__&product=&content=e«spc»HTTP/1.1«cr»«lf» User-Agent:«spc»Mozilla/5.0«spc»(Macintosh;«spc»U;«spc»PPC«spc» Mac«spc»OS«spc»X;«spc»en)«spc»AppleWebKit/125.5.7«spc»(KHTML,«spc» like«spc»Gecko)«spc»Safari/125.12«cr»«lf» Cache-Control:«spc»max-age=0«cr»«lf» Referer:«spc»http://landfill.bugzilla.org/bug441496/query.cgi«cr»«lf» Accept:«spc»text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,t ext/plain;q=0.8,image/png,*/*;q=0.5«cr»«lf» Accept-Language:«spc»en-us«cr»«lf» Accept-Encoding:«spc»gzip,«spc»deflate«cr»«lf» Cookie:«spc»DEFAULTFORMAT=specific«cr»«lf» Connection:«spc»keep-alive«cr»«lf» Host:«spc»landfill.bugzilla.org«cr»«lf» «cr»«lf» TCP packet from 63.245.210.140:http(80) to 192.168.0.26:56862 (0 bytes) IP Header: Version: 4; Header Length: 20; TOS: 0; Packet Length: 52 Identifier: 25460; Do Not Fragment; Fragment Offset: 0 Time To Live: 53; Protocol: 6; Header Checksum: 3852 TCP Header: Sequence Number: 615939479; Acknowledgment Number: 2857219482 Header Length: 32; Code Bits: ACK; Window: 55 Checksum: 37240; Urgent Pointer: 0 12 bytes of TCP options: Timestamps: 276045539, 511238997 TCP packet from 63.245.210.140:http(80) to 192.168.0.26:56862 (185 bytes) IP Header: Version: 4; Header Length: 20; TOS: 0; Packet Length: 237 Identifier: 25461; Do Not Fragment; Fragment Offset: 0 Time To Live: 53; Protocol: 6; Header Checksum: 3666 TCP Header: Sequence Number: 615939479; Acknowledgment Number: 2857219482 Header Length: 32; Code Bits: ACK PUSH; Window: 55 Checksum: 18186; Urgent Pointer: 0 12 bytes of TCP options: Timestamps: 276045644, 511238997 Data: HTTP/1.1«spc»500«spc»Internal«spc»Server«spc»Error«cr»«lf» Date:«spc»Fri,«spc»27«spc»Jun«spc»2008«spc»22:36:49«spc» GMT«cr»«lf» Server:«spc»Apache/2.2.3«spc»(CentOS)«cr»«lf» Content-Length:«spc»0«cr»«lf» Connection:«spc»close«cr»«lf» Content-Type:«spc»text/plain;«spc»charset=UTF-8«cr»«lf» «cr»«lf» TCP packet from 192.168.0.26:56862 to 63.245.210.140:http(80) (0 bytes) IP Header: Version: 4; Header Length: 20; TOS: 0; Packet Length: 52 Identifier: 9028; Do Not Fragment; Fragment Offset: 0 Time To Live: 64; Protocol: 6; Header Checksum: 0 TCP Header: Sequence Number: 2857219482; Acknowledgment Number: 615939664 Header Length: 32; Code Bits: ACK; Window: 33211 Checksum: 54122; Urgent Pointer: 0 12 bytes of TCP options: Timestamps: 511238998, 276045644 TCP packet from 63.245.210.140:http(80) to 192.168.0.26:56862 (628 bytes) IP Header: Version: 4; Header Length: 20; TOS: 0; Packet Length: 680 Identifier: 25462; Do Not Fragment; Fragment Offset: 0 Time To Live: 53; Protocol: 6; Header Checksum: 3222 TCP Header: Sequence Number: 615939664; Acknowledgment Number: 2857219482 Header Length: 32; Code Bits: ACK PUSH; Window: 55 Checksum: 4106; Urgent Pointer: 0 12 bytes of TCP options: Timestamps: 276045644, 511238997 Data: <!DOCTYPE«spc»HTML«spc»PUBLIC«spc»"-//IETF//DTD«spc»HTML«spc» 2.0//EN">«lf» <html><head>«lf» <title>500«spc»Internal«spc»Server«spc»Error</title>«lf» </head><body>«lf» <h1>Internal«spc»Server«spc»Error</h1>«lf» <p>The«spc»server«spc»encountered«spc»an«spc»internal«spc» error«spc»or«lf» misconfiguration«spc»and«spc»was«spc»unable«spc»to«spc»complete«lf» your«spc»request.</p>«lf» <p>Please«spc»contact«spc»the«spc»server«spc»administrator,«lf» «spc»webmaster@bugzilla.org«spc»and«spc»inform«spc»them«spc» of«spc»the«spc»time«spc»the«spc»error«spc»occurred,«lf» and«spc»anything«spc»you«spc»might«spc»have«spc»done«spc» that«spc»may«spc»have«lf» caused«spc»the«spc»error.</p>«lf» <p>More«spc»information«spc»about«spc»this«spc»error«spc»may«spc» be«spc»available«lf» in«spc»the«spc»server«spc»error«spc»log.</p>«lf» <hr>«lf» <address>Apache/2.2.3«spc»(CentOS)«spc»Server«spc»at«spc»landfill.bugz illa.org«spc»Port«spc»80</address>«lf» </body></html>«lf» TCP packet from 63.245.210.140:http(80) to 192.168.0.26:56862 (0 bytes) IP Header: Version: 4; Header Length: 20; TOS: 0; Packet Length: 52 Identifier: 25463; Do Not Fragment; Fragment Offset: 0 Time To Live: 53; Protocol: 6; Header Checksum: 3849 TCP Header: Sequence Number: 615940292; Acknowledgment Number: 2857219482 Header Length: 32; Code Bits: FIN ACK; Window: 55 Checksum: 36321; Urgent Pointer: 0 12 bytes of TCP options: Timestamps: 276045644, 511238997 TCP packet from 192.168.0.26:56862 to 63.245.210.140:http(80) (0 bytes) IP Header: Version: 4; Header Length: 20; TOS: 0; Packet Length: 52 Identifier: 9523; Do Not Fragment; Fragment Offset: 0 Time To Live: 64; Protocol: 6; Header Checksum: 0 TCP Header: Sequence Number: 2857219482; Acknowledgment Number: 615940292 Header Length: 32; Code Bits: ACK; Window: 32990 Checksum: 54122; Urgent Pointer: 0 12 bytes of TCP options: Timestamps: 511238998, 276045644 TCP packet from 192.168.0.26:56862 to 63.245.210.140:http(80) (0 bytes) IP Header: Version: 4; Header Length: 20; TOS: 0; Packet Length: 52 Identifier: 30212; Do Not Fragment; Fragment Offset: 0 Time To Live: 64; Protocol: 6; Header Checksum: 0 TCP Header: Sequence Number: 2857219482; Acknowledgment Number: 615940293 Header Length: 32; Code Bits: ACK; Window: 32990 Checksum: 54122; Urgent Pointer: 0 12 bytes of TCP options: Timestamps: 511238998, 276045644 TCP packet from 192.168.0.26:56862 to 63.245.210.140:http(80) (0 bytes) IP Header: Version: 4; Header Length: 20; TOS: 0; Packet Length: 52 Identifier: 10297; Do Not Fragment; Fragment Offset: 0 Time To Live: 64; Protocol: 6; Header Checksum: 0 TCP Header: Sequence Number: 2857219482; Acknowledgment Number: 615940293 Header Length: 32; Code Bits: FIN ACK; Window: 33304 Checksum: 54122; Urgent Pointer: 0 12 bytes of TCP options: Timestamps: 511238998, 276045644 TCP packet from 63.245.210.140:http(80) to 192.168.0.26:56862 (0 bytes) IP Header: Version: 4; Header Length: 20; TOS: 0; Packet Length: 52 Identifier: 25464; Do Not Fragment; Fragment Offset: 0 Time To Live: 53; Protocol: 6; Header Checksum: 3848 TCP Header: Sequence Number: 615940293; Acknowledgment Number: 2857219483 Header Length: 32; Code Bits: ACK; Window: 55 Checksum: 36288; Urgent Pointer: 0 12 bytes of TCP options: Timestamps: 276045675, 511238998 Stop Watching Network Traffic
Guy, Bob: that wasn't my patch. I backed it out and still saw a problem. I cvs updated and it went away, so please try again :-) Gerv
Unfortunately, it seems to have returned, as I tried to test and it was happening again. Here are the response headers as reported by Firefox: Date: Tue, 01 Jul 2008 17:07:47 GMT Server: Apache/2.2.3 (CentOS) Content-Length: 0 Connection: close Content-Type: text/plain; charset=UTF-8 500 Internal Server Error
Ah, I see. "Editing" or patching buglist.cgi changes its group and then Apache can't read it. Try again now. Gerv
I tested in Safari 1.3.x, Safari 3.1.1, and OmniWeb 5.7 (which uses a modified version of WebKit), and everything seemed to work as expected. I got the intermediate page followed by the results page in Safari 3 and OW, and went straight to the results page in Safari 1.3.
Checking in buglist.cgi; /cvsroot/mozilla/webtools/bugzilla/buglist.cgi,v <-- buglist.cgi new revision: 1.377; previous revision: 1.376 done Gerv
Status: ASSIGNED → RESOLVED
Closed: 17 years ago
Resolution: --- → FIXED
Backing out the patch. It breaks Safari 3.2.3 on Mac and Google Chrome 2.0 on Mac and Windows, see bug 492946. For the record, the patch never landed on the 3.2 and 3.0 branches despite the target milestone and approval flags, so only 3.3 and 3.5 are affected by this problem. tip: Checking in buglist.cgi; /cvsroot/mozilla/webtools/bugzilla/buglist.cgi,v <-- buglist.cgi new revision: 1.397; previous revision: 1.396 done 3.3.4: Checking in buglist.cgi; /cvsroot/mozilla/webtools/bugzilla/buglist.cgi,v <-- buglist.cgi new revision: 1.394.2.2; previous revision: 1.394.2.1 done
Blocks: 492946
Status: RESOLVED → REOPENED
Flags: approval3.2+
Flags: approval3.0+
Flags: approval+
Resolution: FIXED → ---
Target Milestone: Bugzilla 3.0 → ---
Sounds to me like Safari implemented this in 3.1 and had it working correctly there, then broke it in 3.2 (and other browsers that use the corresponding version of WebKit)
/me breathes a sigh of relief that it wasn't his fault. I say we give up on Safari server-push until they get their act together. So I suggest WONTFIX. Gerv
It seemed to be working well on the first beta of Safari 4.0 on Mac OS X
WONTFIX - server push on Safari seems to be intermittent. They can cope without :-) Gerv
Status: REOPENED → RESOLVED
Closed: 17 years ago16 years ago
Resolution: --- → WONTFIX
Agreed. Until such time as all supported versions of Safari reliably support push, we shouldn't push to Safari.
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: