]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Sorry -- undoing accidentally committed stuff. The Content-Length
authorMartin Kraemer <martin@apache.org>
Tue, 8 Jan 2002 16:26:18 +0000 (16:26 +0000)
committerMartin Kraemer <martin@apache.org>
Tue, 8 Jan 2002 16:26:18 +0000 (16:26 +0000)
fix of the preceding commit is preserved.

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

src/main/http_protocol.c

index dc21559273de00b857b717cf0ecf2de6118f9ca0..26240558aebc6263a79d53121dc846055c541d0f 100644 (file)
@@ -1041,43 +1041,16 @@ static int read_request_line(request_rec *r)
         r->protocol  = ap_pstrdup(r->pool, "HTTP/1.0");
         return 0;
     }
+
     r->assbackwards = (ll[0] == '\0');
     r->protocol = ap_pstrdup(r->pool, ll[0] ? ll : "HTTP/0.9");
 
-    /* The following test tries to skip past the "HTTP/nn.mm"
-     * protocol string, collecting major=nn and minor=mm.
-     * ll is advanced past "HTTP/nn.mm" so that it can be checked
-     * for proper string termination (only valid chars: \r\n).
-     */
-    if (memcmp(ll,"HTTP/",5) == 0 && isdigit(ll[5])) {
-
-        /* Read major protocol level: */
-        major = strtol(&ll[5], &ll, 10);
-        if (errno != ERANGE && ll[0] == '/' && isdigit(ll[1])) {
-
-            /* Read minor protocol level: */
-            minor = strtol(&ll[1], &ll, 10);
+    if (2 == sscanf(r->protocol, "HTTP/%u.%u", &major, &minor)
+      && minor < HTTP_VERSION(1,0))    /* don't allow HTTP/0.1000 */
+       r->proto_num = HTTP_VERSION(major, minor);
+    else
+       r->proto_num = HTTP_VERSION(1,0);
 
-           if (errno != ERANGE) { 
-                if (minor < HTTP_VERSION(1,0)) /* don't allow HTTP/0.1000 */
-                    r->proto_num = HTTP_VERSION(major, minor);
-                else
-                    r->proto_num = HTTP_VERSION(1,0);
-           }
-       }
-    }
-    /* If the request does not end after the "HTTP/x.y\r\n" (or after the
-     * URI in HTTP/0.9), then signal an error condition [400 Bad Request].
-     */
-    if (ll[strspn(ll," \r\n")] != '\0') {
-        ap_table_setn(r->notes, "error-notes",
-                      "Request line not ending properly after \"HTTP/x.y\":"
-                      "<PRE>\n", ap_escape_html(r->pool, r->protocol), "</PRE>");
-        r->status    = HTTP_BAD_REQUEST;
-        r->proto_num = HTTP_VERSION(1,0);
-        r->protocol  = ap_pstrdup(r->pool, "HTTP/1.0");
-        return 0;
-    }
     return 1;
 }