dgaudet 98/03/04 02:58:09
Modified: src CHANGES src/modules/proxy proxy_http.c Log: ProxyPass didn't deal with query strings because the ?args part is already truncated in that case. Joel's patch worked for subrequests (i.e. via #include virtual)... I fixed it to deal with all requests... and I couldn't help but clean up some crufty code in proxy_http_canon(). Submitted by: Joel Truher <[EMAIL PROTECTED]> Revision Changes Path 1.682 +3 -0 apache-1.3/src/CHANGES Index: CHANGES =================================================================== RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.681 retrieving revision 1.682 diff -u -r1.681 -r1.682 --- CHANGES 1998/03/04 08:37:05 1.681 +++ CHANGES 1998/03/04 10:58:06 1.682 @@ -1,5 +1,8 @@ Changes with Apache 1.3b6 + *) When using ProxyPass the ?querystring was not passed correctly. + [Joel Truher <[EMAIL PROTECTED]>] + *) To deal with modules being compiled and [dynamically] linked at a different time from the core, the SERVER_VERSION and SERVER_BUILT symbols have been abstracted through the new 1.41 +8 -16 apache-1.3/src/modules/proxy/proxy_http.c Index: proxy_http.c =================================================================== RCS file: /export/home/cvs/apache-1.3/src/modules/proxy/proxy_http.c,v retrieving revision 1.40 retrieving revision 1.41 diff -u -r1.40 -r1.41 --- proxy_http.c 1998/02/27 15:15:26 1.40 +++ proxy_http.c 1998/03/04 10:58:09 1.41 @@ -67,7 +67,7 @@ */ int proxy_http_canon(request_rec *r, char *url, const char *scheme, int def_port) { - char *host, *path, *search, *p, sport[7]; + char *host, *path, *search, sport[7]; const char *err; int port; @@ -81,29 +81,21 @@ /* now parse path/search args, according to rfc1738 */ /* N.B. if this isn't a true proxy request, then the URL _path_ - * has already been decoded + * has already been decoded. True proxy requests have r->uri + * == r->unparsed_uri, and no others have that property. */ - if (r->proxyreq) { - p = strchr(url, '?'); - if (p != NULL) - *(p++) = '\0'; + if (r->uri == r->unparsed_uri) { + search = strchr(url, '?'); + if (search != NULL) + *(search++) = '\0'; } else - p = r->args; + search = r->args; /* process path */ path = proxy_canonenc(r->pool, url, strlen(url), enc_path, r->proxyreq); if (path == NULL) return HTTP_BAD_REQUEST; - -/* process search */ - if (p != NULL) { - search = p; - if (search == NULL) - return HTTP_BAD_REQUEST; - } - else - search = NULL; if (port != def_port) ap_snprintf(sport, sizeof(sport), ":%d", port);