"BAZLEY, Sebastian" <[EMAIL PROTECTED]> writes:

> When using the a Netscape proxy server to fetch (GET) a file, if the file
> has been cached, then part of the HTTP headers get stored with the file.
> [This causes problems with binary files!]
> 
> Using debug shows the following header lines:
> 
> [snip]
> Warning: 10 host:port "Remote server was not contacted, document may be out
> of date"
> Last checked: Mon Apr 03 17:49:01 2000
> Server: Netscape-Proxy/2.52
> Content-Length: nnn
> Content-Type: etc
> <blank line>
> 
> All the lines starting with "Last checked:" are copied to the output file.
> 
> Inspection of the LWP code suggests that the problem is the space in the
> "Last checked:" header line - presumably this is not a valid HTTP header.
> 
> Temporarily changing the regular expression in HTTP.PM to allow a space
> fixes the problem, but strikes me as a kludge.
> 
> Can anyone advise the best course of action (excluding fixing the proxy
> server!) ?

I have had this patch pending for a while.  It would probably help here.

Regards,
Gisle


Index: lib/LWP/Protocol/http.pm
===================================================================
RCS file: /home/cvs/aas/perl/mods/libwww-perl/lib/LWP/Protocol/http.pm,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -p -u -r1.47 -r1.48
--- http.pm     1999/11/04 20:31:21     1.47
+++ http.pm     2000/04/07 13:09:54     1.48
@@ -1,5 +1,5 @@
 #
-# $Id: http.pm,v 1.47 1999/11/04 20:31:21 gisle Exp $
+# $Id: http.pm,v 1.48 2000/04/07 13:09:54 gisle Exp $
 
 package LWP::Protocol::http;
 
@@ -199,19 +199,10 @@ sub request
                if ($line =~ /^([a-zA-Z0-9_\-.]+)\s*:\s*(.*)/) {
                    $response->push_header($key, $val) if $key;
                    ($key, $val) = ($1, $2);
-               } elsif ($line =~ /^\s+(.*)/) {
-                   unless ($key) {
-                       $response->header("Client-Warning" =>
-                                        => "Illegal continuation header");
-                       $buf = "$save$buf";
-                       last;
-                   }
+               } elsif ($line =~ /^\s+(.*)/ && $key) {
                    $val .= " $1";
                } else {
-                   $response->header("Client-Warning" =>
-                                     "Illegal header '$line'");
-                   $buf = "$save$buf";
-                   last;
+                   $response->push_header("Client-Bad-Header-Line" => $line);
                }
            }
            $response->push_header($key, $val) if $key;

Reply via email to