]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Tomcat with mod_jk2 sometimes omits the Reason-Phrase from the
authorMartin Kraemer <martin@apache.org>
Mon, 22 Jul 2002 16:26:03 +0000 (16:26 +0000)
committerMartin Kraemer <martin@apache.org>
Mon, 22 Jul 2002 16:26:03 +0000 (16:26 +0000)
response line ("HTTP/1.1 200 \r\n"). It looks like RFC2616 allows this,
but ap_getline() strips the trailing blank, and that lead to
an error in ap_proxy_read_response_line() for proxy-requests to
Tomcat+mod_jk2 servers. (It replaced the NIL after the "200" by
a space, and so the resulting response line had an extra NL appended).
Now the SP character which was deleted by ap_getline() is reappended,
avoiding the erroneous '\0'->' ' change, and preserving RFC2616's
requirement
     Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
     Reason-Phrase = *<TEXT, excluding CR, LF>
(thus there is now always a SP after the Status-Code).

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@96144 13f79535-47bb-0310-9956-ffa450edef68

src/modules/proxy/proxy_util.c

index d350412e9383b36350b29bae160bcdabb8b33e21..68ea8beca7890af9e4ee6eb55e5a5567a6665b4a 100644 (file)
@@ -1607,6 +1607,12 @@ int ap_proxy_read_response_line(BUFF *f, request_rec *r, char *buffer, int size,
         }
         *backasswards = 0;
 
+        /* there need not be a reason phrase in the response,
+        * and ap_getline() already deleted trailing whitespace.
+        * But RFC2616 requires a SP after the Status-Code. Add one:
+        */
+       if (strlen(buffer) < sizeof("HTTP/1.x 200 ")-1)
+         buffer = ap_pstrcat(r->pool, buffer, " ", NULL);
         buffer[12] = '\0';
         r->status = atoi(&buffer[9]);
         buffer[12] = ' ';