From: Martin Kraemer Date: Mon, 22 Jul 2002 16:26:03 +0000 (+0000) Subject: Tomcat with mod_jk2 sometimes omits the Reason-Phrase from the X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=86a5849ee6dca9332c95b4d9591bf39d6c246d46;p=thirdparty%2Fapache%2Fhttpd.git Tomcat with mod_jk2 sometimes omits the Reason-Phrase from the 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 = * (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 --- diff --git a/src/modules/proxy/proxy_util.c b/src/modules/proxy/proxy_util.c index d350412e938..68ea8beca78 100644 --- a/src/modules/proxy/proxy_util.c +++ b/src/modules/proxy/proxy_util.c @@ -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] = ' ';