You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by yl...@apache.org on 2021/11/25 20:47:14 UTC

svn commit: r1895341 - in /httpd/httpd/trunk: STATUS include/http_protocol.h modules/http/http_request.c modules/http2/h2_request.c server/protocol.c server/util.c

Author: ylavic
Date: Thu Nov 25 20:47:14 2021
New Revision: 1895341

URL: http://svn.apache.org/viewvc?rev=1895341&view=rev
Log:
Revert spurious commit r1895340.

Modified:
    httpd/httpd/trunk/STATUS
    httpd/httpd/trunk/include/http_protocol.h
    httpd/httpd/trunk/modules/http/http_request.c
    httpd/httpd/trunk/modules/http2/h2_request.c
    httpd/httpd/trunk/server/protocol.c
    httpd/httpd/trunk/server/util.c

Modified: httpd/httpd/trunk/STATUS
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/STATUS?rev=1895341&r1=1895340&r2=1895341&view=diff
==============================================================================
--- httpd/httpd/trunk/STATUS (original)
+++ httpd/httpd/trunk/STATUS Thu Nov 25 20:47:14 2021
@@ -178,7 +178,7 @@ OLD ISSUES THAT WERE THOUGHT TO BE SHOWS
       clearly wrong, and even if so, it doesn't seem like a
       showstopper.
 
-  * the edge connection filter cannot be removed
+  * the edge connection filter cannot be removed 
     http://marc.theaimsgroup.com/?l=apache-httpd-dev&m=105366252619530&w=2
     http://mail-archives.apache.org/mod_mbox/httpd-dev/200501.mbox/%3C41E30B42.4060202@stason.org%3E
     jerenkrantz asks: Why should this block a release?

Modified: httpd/httpd/trunk/include/http_protocol.h
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/include/http_protocol.h?rev=1895341&r1=1895340&r2=1895341&view=diff
==============================================================================
--- httpd/httpd/trunk/include/http_protocol.h (original)
+++ httpd/httpd/trunk/include/http_protocol.h Thu Nov 25 20:47:14 2021
@@ -96,13 +96,6 @@ AP_DECLARE(void) ap_get_mime_headers(req
 AP_DECLARE(void) ap_get_mime_headers_core(request_rec *r,
                                           apr_bucket_brigade *bb);
 
-/**
- * Run post_read_request hook and validate.
- * @param r The current request
- * @return OK or HTTP_...
- */
-AP_DECLARE(int) ap_post_read_request(request_rec *r);
-
 /* Finish up stuff after a request */
 
 /**

Modified: httpd/httpd/trunk/modules/http/http_request.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http/http_request.c?rev=1895341&r1=1895340&r2=1895341&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/http/http_request.c (original)
+++ httpd/httpd/trunk/modules/http/http_request.c Thu Nov 25 20:47:14 2021
@@ -690,7 +690,7 @@ static request_rec *internal_internal_re
      * to do their thing on internal redirects as well.  Perhaps this is a
      * misnamed function.
      */
-    if ((access_status = ap_post_read_request(new))) {
+    if ((access_status = ap_run_post_read_request(new))) {
         ap_die(access_status, new);
         return NULL;
     }

Modified: httpd/httpd/trunk/modules/http2/h2_request.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_request.c?rev=1895341&r1=1895340&r2=1895341&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/http2/h2_request.c (original)
+++ httpd/httpd/trunk/modules/http2/h2_request.c Thu Nov 25 20:47:14 2021
@@ -383,7 +383,7 @@ request_rec *h2_create_request_rec(const
     ap_add_input_filter_handle(ap_http_input_filter_handle,
                                NULL, r, r->connection);
     
-    if ((access_status = ap_post_read_request(r))) {
+    if ((access_status = ap_run_post_read_request(r))) {
         /* Request check post hooks failed. An example of this would be a
          * request for a vhost where h2 is disabled --> 421.
          */

Modified: httpd/httpd/trunk/server/protocol.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/protocol.c?rev=1895341&r1=1895340&r2=1895341&view=diff
==============================================================================
--- httpd/httpd/trunk/server/protocol.c (original)
+++ httpd/httpd/trunk/server/protocol.c Thu Nov 25 20:47:14 2021
@@ -1595,7 +1595,7 @@ request_rec *ap_read_request(conn_rec *c
     /* we may have switched to another server */
     apply_server_config(r);
 
-    if ((access_status = ap_post_read_request(r))) {
+    if ((access_status = ap_run_post_read_request(r))) {
         goto die;
     }
 
@@ -1650,24 +1650,6 @@ ignore:
     return NULL;
 }
 
-AP_DECLARE(int) ap_post_read_request(request_rec *r)
-{
-    int status;
-
-    if ((status = ap_run_post_read_request(r))) {
-        return status;
-    }
-
-    /* Enforce http(s) only scheme for non-forward-proxy requests */
-    if (!r->proxyreq
-            && r->parsed_uri.scheme
-            && ap_cstr_casecmp(r->parsed_uri.scheme, ap_http_scheme(r)) != 0) {
-        return HTTP_BAD_REQUEST;
-    }
-
-    return OK;
-}
-
 /* if a request with a body creates a subrequest, remove original request's
  * input headers which pertain to the body which has already been read.
  * out-of-line helper function for ap_set_sub_req_protocol.

Modified: httpd/httpd/trunk/server/util.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/util.c?rev=1895341&r1=1895340&r2=1895341&view=diff
==============================================================================
--- httpd/httpd/trunk/server/util.c (original)
+++ httpd/httpd/trunk/server/util.c Thu Nov 25 20:47:14 2021
@@ -1735,88 +1735,60 @@ AP_DECLARE(char *) ap_get_token(apr_pool
     return token;
 }
 
-#define IS_TOKEN_SEP(c) ((c) == ',' || (c) == ';')
 
 /* find http tokens, see the definition of token from RFC2068 */
 AP_DECLARE(int) ap_find_token(apr_pool_t *p, const char *line, const char *tok)
 {
     const unsigned char *start_token;
     const unsigned char *s;
-    apr_size_t tlen;
 
-    tlen = strlen(tok);
-    if (!line || !tlen)
+    if (!line)
         return 0;
 
     s = (const unsigned char *)line;
     for (;;) {
-        /* find start of token */
-        while (apr_isspace(*s) || IS_TOKEN_SEP(*s)) {
+        /* find start of token, skip all stop characters */
+        while (*s && TEST_CHAR(*s, T_HTTP_TOKEN_STOP)) {
             ++s;
         }
         if (!*s) {
             return 0;
         }
-        if (!TEST_CHAR(*s, T_HTTP_TOKEN_STOP)) {
-            /* find end of token */
-            start_token = s;
-            do {
-                ++s;
-            } while (!TEST_CHAR(*s, T_HTTP_TOKEN_STOP));
-
-            if (tlen == (apr_size_t)(s - start_token)) {
-                /* only spaces up to the next token separator */
-                while (apr_isspace(*s)) {
-                    ++s;
-                }
-                if ((!*s || IS_TOKEN_SEP(*s))
-                    && !ap_cstr_casecmpn((const char *)start_token,
-                                         (const char *)tok, tlen)) {
-                    return 1;
-                }
-            }
-        }
-        /* advance to the next token */
-        while (*s && !IS_TOKEN_SEP(*s)) {
+        start_token = s;
+        /* find end of the token */
+        while (*s && !TEST_CHAR(*s, T_HTTP_TOKEN_STOP)) {
             ++s;
         }
+        if (!ap_cstr_casecmpn((const char *)start_token, (const char *)tok,
+                         s - start_token)) {
+            return 1;
+        }
+        if (!*s) {
+            return 0;
+        }
     }
 }
 
 static const char *find_last_token(apr_pool_t *p, const char *line,
                             const char *tok)
 {
-    apr_size_t llen, tlen;
-    apr_ssize_t lidx;
+    int llen, tlen, lidx;
 
     if (!line)
         return NULL;
 
-    tlen = strlen(tok);
-    if (!tlen)
-        return NULL;
-
     llen = strlen(line);
-    while (llen > 0 && apr_isspace(line[llen - 1])) 
-        --llen;
+    tlen = strlen(tok);
     lidx = llen - tlen;
-    if (lidx < 0)
-        return NULL;
 
-    if (lidx > 0) {
-        apr_size_t i = lidx - 1;
-        do {
-            if (line[i] == ',')
-                break;
-            if (!apr_isspace(line[i]))
-                return NULL;
-        } while (i--);
-    }
-
-    if (ap_cstr_casecmpn(&line[lidx], tok, tlen) != 0)
+    if (lidx < 0 ||
+        (lidx > 0 && !(apr_isspace(line[lidx - 1]) || line[lidx - 1] == ',')))
         return NULL;
 
-    return &line[lidx];
+    if (ap_cstr_casecmpn(&line[lidx], tok, tlen) == 0) { 
+        return &line[lidx];
+    }
+   return NULL;
 }
 
 AP_DECLARE(int) ap_find_last_token(apr_pool_t *p, const char *line,