You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by dg...@hyperreal.org on 1998/03/04 11:58:09 UTC

cvs commit: apache-1.3/src/modules/proxy proxy_http.c

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 <tr...@wired.com>
  
  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 <tr...@wired.com>]
  +
     *) 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);