Reviewed by cblu and mjs.
authorkdecker <kdecker@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 11 Jul 2005 16:57:39 +0000 (16:57 +0000)
committerkdecker <kdecker@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 11 Jul 2005 16:57:39 +0000 (16:57 +0000)
Fixed: <rdar://problem/4099552> REGRESSION: Safari 1.3 Netscape API NPN_PostURL[Notify] no longer allows manual headers

Most plugins (flash) send 2 CRFL's between the header and body of their POST requests, while the adboe plugin sends two LF's. This caused us to send custom headers as part of the actual POST data itself, and correspondently, would skew Content-Length.

        * Plugins.subproj/WebBaseNetscapePluginView.m:
        (-[NSData _web_locationAfterFirstBlankLine]): Look for two LF's as well

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@9653 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKit/ChangeLog
WebKit/Plugins.subproj/WebBaseNetscapePluginView.m

index 3f806b8209e89c90db908996923431ad068821fe..9fcc69f7c9a78a8e706fe397a3b5cef75829791c 100644 (file)
@@ -1,3 +1,14 @@
+2005-07-11  Kevin Decker  <kdecker@apple.com>
+
+        Reviewed by cblu and mjs.
+
+       Fixed: <rdar://problem/4099552> REGRESSION: Safari 1.3 Netscape API NPN_PostURL[Notify] no longer allows manual headers
+       
+       Most plugins (flash) send 2 CRFL's between the header and body of their POST requests, while the adboe plugin sends two LF's. This caused us to send custom headers as part of the actual POST data itself, and correspondently, would skew Content-Length.
+
+        * Plugins.subproj/WebBaseNetscapePluginView.m:
+        (-[NSData _web_locationAfterFirstBlankLine]): Look for two LF's as well
+
 2005-07-09  Maciej Stachowiak  <mjs@apple.com>
 
         - back out my revent page cache changes, turns out they cause a
index 3019241ebac5edb9fadbf4db55295c17350c44fb..e242e6bc4516863f4e9abd138b7880513cadc385 100644 (file)
@@ -1798,7 +1798,7 @@ static OSStatus TSMEventHandler(EventHandlerCallRef inHandlerRef, EventRef inEve
     return [self length] > 0 && ((const char *)[self bytes])[0] == '\n';
 }
 
-// Returns the position after 2 CRLF's or 1 CRLF if it is the first line.
+
 - (unsigned)_web_locationAfterFirstBlankLine
 {
     const char *bytes = (const char *)[self bytes];
@@ -1806,6 +1806,13 @@ static OSStatus TSMEventHandler(EventHandlerCallRef inHandlerRef, EventRef inEve
     
     unsigned i;
     for (i = 0; i < length - 4; i++) {
+        
+        //most plugins (Flash) send 2 CRFL's between the header and body of their POST requests, while the adboe plugin sends two LF's.
+        if (bytes[i] == '\n' && bytes[i+1] == '\n') {
+            return i+2;
+        }
+        
+        // Returns the position after 2 CRLF's or 1 CRLF if it is the first line.
         if (bytes[i] == '\r' && bytes[i+1] == '\n') {
             i += 2;
             if (i == 2) {