Haven't seen a reply to this one, are you planning on applying the patch?
Here's the original posting:
[EMAIL PROTECTED] wrote:
> Hi there,
> if the LWP::UserAgent has a cookie jar attached to it, it should
> only use it for http/https requests -- in case we're fetching
> ftp: or file: or other URLs, it should keep the cookie jar untouched,
> just like a regular browser does. With LWP 5.64, if you try this:
> use LWP::UserAgent;
> use HTTP::Cookies;
> my $ua = LWP::UserAgent->new();
> my $jar = HTTP::Cookies->new();
> $ua->cookie_jar($jar);
> my $resp = $ua->get("file://etc/passwd");
> you'll get
> Can't locate object method "port" via package "URI::file"
> Fix (checks for http/s scheme before using the cookie jar in
> UserAgent.pm) and a test case for t/base/cookies.t are appended below.
> -- Mike
> --------------------------------------------------------
> Mike Schilli [EMAIL PROTECTED] http://perlmeister.com
> --------------------------------------------------------
> diff -Naur lwp5/lib/LWP/UserAgent.pm lwp5.new/lib/LWP/UserAgent.pm
> --- lwp5/lib/LWP/UserAgent.pm Tue Dec 11 13:11:29 2001
> +++ lwp5.new/lib/LWP/UserAgent.pm Tue Mar 5 23:49:13 2002
> @@ -393,7 +393,8 @@
> $last = 0 if $last < 0; # there is no way to actually request no content
> $request->init_header('Range' => "bytes=0-$last");
> }
> - $cookie_jar->add_cookie_header($request) if $cookie_jar;
> + $cookie_jar->add_cookie_header($request) if $cookie_jar and
> + $request->uri->scheme() =~ /^https?$/;
> return($request);
> }
> diff -Naur lwp5/t/base/cookies.t lwp5.new/t/base/cookies.t
> --- lwp5/t/base/cookies.t Thu Feb 7 11:08:08 2002
> +++ lwp5.new/t/base/cookies.t Tue Mar 5 23:47:24 2002
> @@ -1,6 +1,7 @@
> -print "1..36\n";
> +print "1..37\n";
> #use LWP::Debug '+';
> +use LWP::UserAgent;
> use HTTP::Cookies;
> use HTTP::Request;
> use HTTP::Response;
> @@ -598,6 +599,18 @@
> $counter{"session_before"} == 0;
> #print $c->as_string;
> print "ok 36\n";
> +
> +#-------------------------------------------------------------------
> +# Verify the LWP::UserAgent works with the cookie jar attached
> +
> +my $ua = LWP::UserAgent->new();
> +$c = HTTP::Cookies->new();
> +$ua->cookie_jar($c);
> +my $resp = $ua->get("file://this/file/does/not/exist");
> +if($resp->is_success()) {
> + print "not ";
> +}
> +print "ok 37\n";
> #-------------------------------------------------------------------