You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by Marc Slemko <ma...@hyperreal.org> on 1997/07/12 22:33:05 UTC

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

marc        97/07/12 13:33:05

  Modified:    src/modules/proxy  proxy_http.c
  Log:
  First problem: if a client sends a Host: header with a different case than
  "Host:", the proxy won't see it and it will end up with two Host: headers
  with different capitalization.
  
  Second problem: if the proxy connects to a HTTP/0.9 server, the
  first line returned will be corrupt because len was tampered with.
  
  Reviewed by:    Dean Gaudet, Marc Slemko
  Submitted by:   Kenichi Hori <ke...@d2.bs1.fc.nec.co.jp>
  PR: 813,814
  
  Revision  Changes    Path
  1.20      +3 -5      apache/src/modules/proxy/proxy_http.c
  
  Index: proxy_http.c
  ===================================================================
  RCS file: /export/home/cvs/apache/src/modules/proxy/proxy_http.c,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -C3 -r1.19 -r1.20
  *** proxy_http.c	1997/06/16 19:32:53	1.19
  --- proxy_http.c	1997/07/12 20:33:04	1.20
  ***************
  *** 260,266 ****
        for (i=0; i < reqhdrs_arr->nelts; i++)
        {
    	if (reqhdrs[i].key == NULL || reqhdrs[i].val == NULL
  ! 	  || !strcmp(reqhdrs[i].key, "Host"))	/* already sent if there */
    	    continue;
    	bvputs(f, reqhdrs[i].key, ": ", reqhdrs[i].val, "\015\012", NULL);
        }
  --- 260,266 ----
        for (i=0; i < reqhdrs_arr->nelts; i++)
        {
    	if (reqhdrs[i].key == NULL || reqhdrs[i].val == NULL
  ! 	  || !strcasecmp(reqhdrs[i].key, "Host"))  /* already sent if there */
    	    continue;
    	bvputs(f, reqhdrs[i].key, ": ", reqhdrs[i].val, "\015\012", NULL);
        }
  ***************
  *** 331,339 ****
     * one type
     */
        
  -     len = resp_hdrs->nelts;
        hdr = (struct hdr_entry *)resp_hdrs->elts;
  !     for (i=0; i < len; i++)
        {
    	if (hdr[i].value[0] == '\0') continue;
    	p = hdr[i].field;
  --- 331,338 ----
     * one type
     */
        
        hdr = (struct hdr_entry *)resp_hdrs->elts;
  !     for (i=0; i < resp_hdrs->nelts; i++)
        {
    	if (hdr[i].value[0] == '\0') continue;
    	p = hdr[i].field;
  ***************
  *** 371,378 ****
    	    cache = proxy_cache_error(c);
    
    /* send headers */
  !     len = resp_hdrs->nelts;
  !     for (i=0; i < len; i++)
        {
    	if (hdr[i].field == NULL || hdr[i].value == NULL ||
    	    hdr[i].value[0] == '\0') continue;
  --- 370,376 ----
    	    cache = proxy_cache_error(c);
    
    /* send headers */
  !     for (i=0; i < resp_hdrs->nelts; i++)
        {
    	if (hdr[i].field == NULL || hdr[i].value == NULL ||
    	    hdr[i].value[0] == '\0') continue;