Fixed: <rdar://problem/3758113> REGRESSION: Macromedia ColdFusion page doesn't show...
authorcblu <cblu@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 4 Oct 2004 18:01:26 +0000 (18:01 +0000)
committercblu <cblu@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 4 Oct 2004 18:01:26 +0000 (18:01 +0000)
After bumping up our plug-in version, Flash now sends 2 CRLF's between the headers and body of their POST request. Our code was not prepared for this.

        Reviewed by darin.

        * Plugins.subproj/WebBaseNetscapePluginView.m:
        (-[NSData _web_locationAfterFirstBlankLine]): looks for 2 CRLF's, not for 2 LF's

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

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

index 4d65f4d7a4a516344cd8bee8e56eac17a3dd9979..8ce7f485d96e21a4c3986bef9b385bb4a5ce54f7 100644 (file)
@@ -1,3 +1,14 @@
+2004-10-04  Chris Blumenberg  <cblu@apple.com>
+
+       Fixed: <rdar://problem/3758113> REGRESSION: Macromedia ColdFusion page doesn't show main content
+
+       After bumping up our plug-in version, Flash now sends 2 CRLF's between the headers and body of their POST request. Our code was not prepared for this.
+
+        Reviewed by darin.
+
+        * Plugins.subproj/WebBaseNetscapePluginView.m:
+        (-[NSData _web_locationAfterFirstBlankLine]): looks for 2 CRLF's, not for 2 LF's
+
 2004-10-04  Darin Adler  <darin@apple.com>
 
         Reviewed by Ken.
index 725ea71d942cb707aa70dcb85f7f4b52a68f4498..9ee7c76f9b126b2a6b66512a325cfdeefea1bda7 100644 (file)
@@ -1745,22 +1745,23 @@ 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];
     unsigned length = [self length];
-
+    
     unsigned i;
-    for (i = 0; i < length - 2; i++) {
-        if (bytes[i] == '\n' && (i == 0 || bytes[i+1] == '\n')) {
-            i++;
-            while (i < length - 2 && bytes[i] == '\n') {
-                i++;
+    for (i = 0; i < length - 4; i++) {
+        if (bytes[i] == '\r' && bytes[i+1] == '\n') {
+            i += 2;
+            if (i == 2) {
+                return i;
+            } else if (bytes[i] == '\r' && bytes[i+1] == '\n') {
+                return i+2;
             }
-            return i;
         }
     }
-    
     return NSNotFound;
 }