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;