Remote file size (Content-Length) in LWP::Protocol::ftp

SATOU Kazuhito <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.lwp
Organization RIKEN Genomic Sciences Center
Message-ID <[email protected]>
Hi there,

(libwww-perl-5.803)

Following is my code fragment:

...
    my $src = "ftp://...";
    my $ua  = LWP::UserAgent->new ();
    my $res = $ua->head ($src);
    my $size = $res->headers->content_length;
...

I want to know the remote file size before retrieval.  It fails in some
cases with Internal Server Error.  Of course, I know that the
Content-Length may be unknown on server and may be omitted.

In LWP::Protocol::ftp, remote file size (Content-Length) is given by
parsing a message from the FTP server.

ftp.pm
   232              my $mess = $ftp->message;
   233              LWP::Debug::debug($mess);
   234              if ($mess =~ /\((\d+)\s+bytes\)/) {
   235                  $response->header('Content-Length', "$1");
   236              }

Some servers return the following message:

LWP::Protocol::ftp::request: Opening BINARY mode data connection for XXX
(78473 bytes).

It's good!

But others (e.g. Pure-FTPd):

LWP::Protocol::ftp::request: Accepted data connection
30880.0 kbytes to download

It's bad :(

Why not use determinant methods, e.g. Net::FTP size method?
-- 
Visita Inferiora Terrae Rectificando Invenies Occultum Lapidem
SATOU Kazuhito, Ph.D.
Protein Function Team                email: [email protected]
Protein Research Group               phone: +81-45-503-9212
RIKEN Genomic Sciences Center        fax  : +81-45-503-9210
1-7-22 Suehiro, Tsurumi, Yokohama, Kanagawa 230-0045, Japan
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.