[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