[zorp-hu] HTTP strict_header_checking
Balazs Scheidler
bazsi@balabit.hu
Mon, 30 Jul 2001 11:48:25 +0200
Sziasztok!
Visszajelzesek alapjan van nehany olyan url, ami nem jon le zorpon
keresztul. Egy konkret cim alapjan (http://www.skyport.net) megtalaltuk,
hogy a szerver hibas fejlecet ad vissza, ezt pedig a Zorp visszautasitja
(Invalid response hibauzenettel).
Mivel elkepzelheto, hogy viszonylag sok problema szarmazik abbol, hogy a
szerver hibas (egy specialis apache verziorol van szo), ezert
implementaltunk egy opciot strict_header_checking neven, ami alapbol be van
kapcsolva, de kikapcsolhato, ilyen modon RFC inkomplians valaszokat is
elfogadtathatunk.
A patchet backportoltam a 0.8-as agra is, ehhez a patchet itt kuldom, a
0.9-es ag uj verzioja nyilvan tartalmazni fogja.
Index: http.c
===================================================================
RCS file: /var/cvs/zorp-module-http/http.c,v
retrieving revision 1.41.2.5
diff -u -r1.41.2.5 http.c
--- http.c 2001/04/27 14:04:37 1.41.2.5
+++ http.c 2001/07/30 09:40:59
@@ -64,6 +64,7 @@
self->transparent_mode = TRUE;
self->transparent_server_requests = TRUE;
self->transparent_proxy_requests = FALSE;
+ self->strict_header_checking = TRUE;
self->max_line_length = 4096;
self->max_header_lines = 50;
@@ -155,6 +156,11 @@
Z_VAR_TYPE_INT | Z_VAR_GET | Z_VAR_SET | Z_VAR_SET_CONFIG,
&self->rewrite_host_header);
+ /* strict header checking */
+ z_proxy_var_new(&self->super, "strict_header_checking",
+ Z_VAR_TYPE_INT | Z_VAR_GET | Z_VAR_SET | Z_VAR_SET_CONFIG,
+ &self->strict_header_checking);
+
/* integer */
z_proxy_var_new(&self->super, "max_line_length",
Z_VAR_TYPE_INT | Z_VAR_GET | Z_VAR_SET | Z_VAR_SET_CONFIG,
@@ -941,8 +947,13 @@
;
if (*colon != ':')
{
- z_func_leave(self, HTTP_DEBUG);
- return FALSE;
+ if (self->strict_header_checking)
+ {
+ z_func_leave(self, HTTP_DEBUG);
+ return FALSE;
+ }
+ else
+ continue;
}
/* strip trailing white space */
Index: http.h
===================================================================
RCS file: /var/cvs/zorp-module-http/http.h,v
retrieving revision 1.21.2.1
diff -u -r1.21.2.1 http.h
--- http.h 2001/04/27 14:04:38 1.21.2.1
+++ http.h 2001/07/30 09:40:59
@@ -107,6 +107,7 @@
guint parent_proxy_port;
gboolean rewrite_host_header; /* rewrite host header when redirection is done */
+ gboolean strict_header_checking;
guint proto_version; /* version (updated by request and response) : 0x major minor (0x0009 0x0100 0x0101) */
--
Bazsi
PGP info: KeyID 9AF8D0A9 Fingerprint CD27 CFB0 802C 0944 9CFD 804E C82C 8EB1