httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marc Slemko <m...@hyperreal.org>
Subject cvs commit: /apachen/src/modules/proxy mod_proxy.h proxy_cache.c proxy_http.c proxy_util.c
Date Sat, 23 Aug 1997 22:59:14 GMT
marc        97/08/23 15:59:13

  Modified:    apachen/src CHANGES
               apachen/src/modules/proxy mod_proxy.h proxy_cache.c
                        proxy_http.c proxy_util.c
  Log:
  Fix the proxy to set r->headers_out when sending responses.  Wherever
  a header is sent, it is added to headers_out.  This is necessary to
  allow things like logging based on outbound headers to work properly.
  
  PR: 569
  Reviewed by:	Dean Gaudet
  
  Revision  Changes    Path
  1.413     +4 -0      /apachen/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /export/home/cvs//apachen/src/CHANGES,v
  retrieving revision 1.412
  retrieving revision 1.413
  diff -u -r1.412 -r1.413
  --- CHANGES	1997/08/23 12:15:32	1.412
  +++ CHANGES	1997/08/23 22:59:08	1.413
  @@ -1,5 +1,9 @@
   Changes with Apache 1.3a2
   
  +  *) Set r->headers_out when sending responses from the proxy.
  +     This fixes things such as the logging of headers sent from
  +     the proxy.  PR#659  [Marc Slemko]
  +
     *) support/httpd_monitor is no longer distributed because the 
        scoreboard should not be file based if at all possible. Use
        mod_status to see current server snapshot.
  
  
  
  1.19      +2 -1      /apachen/src/modules/proxy/mod_proxy.h
  
  Index: mod_proxy.h
  ===================================================================
  RCS file: /export/home/cvs//apachen/src/modules/proxy/mod_proxy.h,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- mod_proxy.h	1997/08/17 13:56:26	1.18
  +++ mod_proxy.h	1997/08/23 22:59:10	1.19
  @@ -266,7 +266,8 @@
   struct hdr_entry *proxy_add_header(array_header *hdrs_arr, char *field,
       char *value, int rep);
   void proxy_del_header(array_header *hdrs_arr, const char *field);
  -void proxy_send_headers(BUFF *fp, const char *respline, array_header *hdrs_arr);
  +void proxy_send_headers(request_rec *r, const char *respline, 
  +    array_header *hdrs_arr);
   int proxy_liststr(const char *list, const char *val);
   void proxy_hash(const char *it, char *val,int ndepth,int nlength);
   int proxy_hex2sec(const char *x);
  
  
  
  1.24      +2 -3      /apachen/src/modules/proxy/proxy_cache.c
  
  Index: proxy_cache.c
  ===================================================================
  RCS file: /export/home/cvs//apachen/src/modules/proxy/proxy_cache.c,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- proxy_cache.c	1997/08/17 13:56:27	1.23
  +++ proxy_cache.c	1997/08/23 22:59:11	1.24
  @@ -571,7 +571,7 @@
   	r->status = c->status;
   	if (!r->assbackwards) {
   	    soft_timeout("proxy send headers", r);
  -	    proxy_send_headers(r->connection->client, c->resp_line,  c->hdrs);
  +	    proxy_send_headers(r, c->resp_line, c->hdrs);
   	    kill_timeout(r);
   	}
   	bsetopt(r->connection->client, BO_BYTECT, &zero);
  @@ -800,8 +800,7 @@
   	    r->status = c->status;
   	    if (!r->assbackwards) {
   		soft_timeout("proxy send headers", r);
  -		proxy_send_headers(r->connection->client, c->resp_line,
  -		    c->hdrs);
  +		proxy_send_headers(r, c->resp_line, c->hdrs);
   		kill_timeout(r);
   	    }
   	    bsetopt(r->connection->client, BO_BYTECT, &zero);
  
  
  
  1.29      +3 -1      /apachen/src/modules/proxy/proxy_http.c
  
  Index: proxy_http.c
  ===================================================================
  RCS file: /export/home/cvs//apachen/src/modules/proxy/proxy_http.c,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- proxy_http.c	1997/08/23 04:57:03	1.28
  +++ proxy_http.c	1997/08/23 22:59:11	1.29
  @@ -397,8 +397,10 @@
       {
   	if (hdr[i].field == NULL || hdr[i].value == NULL ||
   	    hdr[i].value[0] == '\0') continue;
  -	if (!r->assbackwards)
  +	if (!r->assbackwards) {
   	    rvputs(r, hdr[i].field, ": ", hdr[i].value, "\015\012", NULL);
  +	    table_set(r->headers_out, hdr[i].field, hdr[i].value);
  +	}
   	if (cache != NULL)
   	    if (bvputs(cache, hdr[i].field, ": ", hdr[i].value, "\015\012",
   		       NULL) == -1)
  
  
  
  1.24      +7 -2      /apachen/src/modules/proxy/proxy_util.c
  
  Index: proxy_util.c
  ===================================================================
  RCS file: /export/home/cvs//apachen/src/modules/proxy/proxy_util.c,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- proxy_util.c	1997/08/18 00:12:23	1.23
  +++ proxy_util.c	1997/08/23 22:59:11	1.24
  @@ -512,14 +512,18 @@
   }
   
   /*
  - * Sends response line and headers
  + * Sends response line and headers.  Uses the client fd and the 
  + * headers_out array from the passed request_rec to talk to the client
  + * and to properly set the headers it sends for things such as logging.
  + * 
    * A timeout should be set before calling this routine.
    */
   void
  -proxy_send_headers(BUFF *fp, const char *respline, array_header *hdrs_arr)
  +proxy_send_headers(request_rec *r, const char *respline, array_header *hdrs_arr)
   {
       struct hdr_entry *hdrs;
       int i;
  +    BUFF *fp = r->connection->client;
   
       hdrs = (struct hdr_entry *)hdrs_arr->elts;
   
  @@ -529,6 +533,7 @@
       {
           if (hdrs[i].field == NULL) continue;
   	bvputs(fp, hdrs[i].field, ": ", hdrs[i].value, "\015\012", NULL);
  +	table_set(r->headers_out, hdrs[i].field, hdrs[i].value);
       }
   
       bputs("\015\012", fp);
  
  
  

Mime
View raw message