From: Ash Berlin Date: Fri, 23 Mar 2007 14:23:10 +0000 (+0000) Subject: Empty file support (rt.cpan ticket #25392) X-Git-Tag: v0.9~4 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FHTTP-Body.git;a=commitdiff_plain;h=e288c60594f88445e37fe075355be16dd0785585 Empty file support (rt.cpan ticket #25392) --- diff --git a/lib/HTTP/Body/Parser/MultiPart.pm b/lib/HTTP/Body/Parser/MultiPart.pm index 9f55747..69f2cc5 100644 --- a/lib/HTTP/Body/Parser/MultiPart.pm +++ b/lib/HTTP/Body/Parser/MultiPart.pm @@ -189,16 +189,17 @@ sub parse_body { sub handler { my ( $self, $part ) = @_; + my $disposition = $part->{headers}->{'Content-Disposition'}; + my ($name) = $disposition =~ / name="?([^\";]+)"?/; + my ($filename) = $disposition =~ / filename="?([^\"]+)"?/; + # skip parts without content - if ( $part->{done} && $part->{size} == 0 ) { + if ( $part->{done} && $part->{size} == 0 && !$filename) { return 0; } unless ( exists $part->{name} ) { - my $disposition = $part->{headers}->{'Content-Disposition'}; - my ($name) = $disposition =~ / name="?([^\";]+)"?/; - my ($filename) = $disposition =~ / filename="?([^\"]+)"?/; $part->{name} = $name; $part->{filename} = $filename; diff --git a/t/data/multipart/001-content.dat b/t/data/multipart/001-content.dat index c45f909..cd96556 100644 --- a/t/data/multipart/001-content.dat +++ b/t/data/multipart/001-content.dat @@ -60,4 +60,9 @@ use warnings; print "Hello World :)\n"; +------------0xKhTmLbOuNdArY +Content-Disposition: form-data; name="upload3"; filename="blank.pl" +Content-Type: application/octet-stream + + ------------0xKhTmLbOuNdArY-- diff --git a/t/data/multipart/001-headers.yml b/t/data/multipart/001-headers.yml index e2f5998..e7cac31 100644 --- a/t/data/multipart/001-headers.yml +++ b/t/data/multipart/001-headers.yml @@ -1,4 +1,4 @@ --- -Content-Length: 1559 +Content-Length: 1701 Content-Type: multipart/form-data; boundary=----------0xKhTmLbOuNdArY User-Agent: 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312' diff --git a/t/data/multipart/001-results.yml b/t/data/multipart/001-results.yml index bd2e318..f7f3ee8 100644 --- a/t/data/multipart/001-results.yml +++ b/t/data/multipart/001-results.yml @@ -27,3 +27,10 @@ upload: Content-Type: application/octet-stream name: upload2 size: 71 + upload3: + filename: blank.pl + headers: + Content-Disposition: form-data; name="upload3"; filename="blank.pl" + Content-Type: application/octet-stream + name: upload3 + size: 0