Only in HTTP-Body-0.8: blib diff -ur HTTP-Body-0.8.original/lib/HTTP/Body/MultiPart.pm HTTP-Body-0.8/lib/HTTP/Body/MultiPart.pm --- HTTP-Body-0.8.original/lib/HTTP/Body/MultiPart.pm 2007-03-23 17:00:15.000000000 +0000 +++ HTTP-Body-0.8/lib/HTTP/Body/MultiPart.pm 2007-03-26 00:44:05.000000000 +0100 @@ -257,46 +257,42 @@ 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 && !$filename) { - return 0; - } - unless ( exists $part->{name} ) { + my $disposition = $part->{headers}->{'Content-Disposition'}; + my ($name) = $disposition =~ / name="?([^\";]+)"?/; + my ($filename) = $disposition =~ / filename="?([^\"]*)"?/; + # Need to match empty filenames above, so this part is flagged as an upload type $part->{name} = $name; - $part->{filename} = $filename; - if ($filename) { + if (defined $filename) { + $part->{filename} = $filename; - my $fh = File::Temp->new( UNLINK => 0 ); + if ($filename ne "") { + my $fh = File::Temp->new( UNLINK => 0 ); - $part->{fh} = $fh; - $part->{tempname} = $fh->filename; + $part->{fh} = $fh; + $part->{tempname} = $fh->filename; + } } } - if ( $part->{filename} && ( my $length = length( $part->{data} ) ) ) { + if ( $part->{fh} && ( my $length = length( $part->{data} ) ) ) { $part->{fh}->write( substr( $part->{data}, 0, $length, '' ), $length ); } if ( $part->{done} ) { - if ( $part->{filename} ) { - - $part->{fh}->close; - - delete @{$part}{qw[ data done fh ]}; - - $self->upload( $part->{name}, $part ); - } - - else { + if ( exists $part->{filename} ) { + if ( $part->{filename} ne "" ) { + $part->{fh}->close; + + delete @{$part}{qw[ data done fh ]}; + + $self->upload( $part->{name}, $part ); + } + } else { $self->param( $part->{name}, $part->{data} ); } } Only in HTTP-Body-0.8: Makefile Only in HTTP-Body-0.8: pm_to_blib diff -ur HTTP-Body-0.8.original/t/data/multipart/001-content.dat HTTP-Body-0.8/t/data/multipart/001-content.dat --- HTTP-Body-0.8.original/t/data/multipart/001-content.dat 2007-03-23 16:56:36.000000000 +0000 +++ HTTP-Body-0.8/t/data/multipart/001-content.dat 2007-03-26 00:34:39.000000000 +0100 @@ -65,4 +65,8 @@ Content-Type: application/octet-stream +------------0xKhTmLbOuNdArY +Content-Disposition: form-data; name="upload4"; filename="0" + + ------------0xKhTmLbOuNdArY-- Only in HTTP-Body-0.8/t/data/multipart: 001-content.dat.orig diff -ur HTTP-Body-0.8.original/t/data/multipart/001-headers.yml HTTP-Body-0.8/t/data/multipart/001-headers.yml --- HTTP-Body-0.8.original/t/data/multipart/001-headers.yml 2007-03-23 16:56:36.000000000 +0000 +++ HTTP-Body-0.8/t/data/multipart/001-headers.yml 2007-03-26 00:34:47.000000000 +0100 @@ -1,4 +1,4 @@ --- -Content-Length: 1701 +Content-Length: 1796 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' Only in HTTP-Body-0.8/t/data/multipart: 001-headers.yml.orig Only in HTTP-Body-0.8/t/data/multipart: 001-headers.yml.rej diff -ur HTTP-Body-0.8.original/t/data/multipart/001-results.yml HTTP-Body-0.8/t/data/multipart/001-results.yml --- HTTP-Body-0.8.original/t/data/multipart/001-results.yml 2007-03-23 16:56:36.000000000 +0000 +++ HTTP-Body-0.8/t/data/multipart/001-results.yml 2007-03-26 00:35:33.000000000 +0100 @@ -5,6 +5,7 @@ - A - B text1: Ratione accusamus aspernatur aliquam + text2: "" textarea: "Voluptatem cumque voluptate sit recusandae at. Et quas facere rerum unde esse. Sit est et voluptatem. Vel temporibus velit neque odio non.\r\n\r\nMolestias rerum ut sapiente facere repellendus illo. Eum nulla quis aut. Quidem voluptas vitae ipsam officia voluptatibus eveniet. Aspernatur cupiditate ratione aliquam quidem corrupti. Eos sunt rerum non optio culpa." upload: upload: @@ -34,3 +35,9 @@ Content-Type: application/octet-stream name: upload3 size: 0 + upload4: + filename: 0 + headers: + Content-Disposition: form-data; name="upload4"; filename="0" + name: upload4 + size: 0 Only in HTTP-Body-0.8/t/data/multipart: 001-results.yml.rej diff -ur HTTP-Body-0.8.original/t/data/multipart/002-results.yml HTTP-Body-0.8/t/data/multipart/002-results.yml --- HTTP-Body-0.8.original/t/data/multipart/002-results.yml 2007-03-23 16:53:30.000000000 +0000 +++ HTTP-Body-0.8/t/data/multipart/002-results.yml 2007-03-25 23:09:32.000000000 +0100 @@ -5,6 +5,7 @@ - A - B text1: Ratione accusamus aspernatur aliquam + text2: "" textarea: "Voluptatem cumque voluptate sit recusandae at. Et quas facere rerum unde esse. Sit est et voluptatem. Vel temporibus velit neque odio non.\r\n\r\nMolestias rerum ut sapiente facere repellendus illo. Eum nulla quis aut. Quidem voluptas vitae ipsam officia voluptatibus eveniet. Aspernatur cupiditate ratione aliquam quidem corrupti. Eos sunt rerum non optio culpa.\r\n" upload: upload: diff -ur HTTP-Body-0.8.original/t/data/multipart/003-results.yml HTTP-Body-0.8/t/data/multipart/003-results.yml --- HTTP-Body-0.8.original/t/data/multipart/003-results.yml 2007-03-23 16:53:30.000000000 +0000 +++ HTTP-Body-0.8/t/data/multipart/003-results.yml 2007-03-25 23:09:32.000000000 +0100 @@ -5,6 +5,7 @@ - A - B text1: Ratione accusamus aspernatur aliquam + text2: "" textarea: "Voluptatem cumque voluptate sit recusandae at. Et quas facere rerum unde esse. Sit est et voluptatem. Vel temporibus velit neque odio non.\n\nMolestias rerum ut sapiente facere repellendus illo. Eum nulla quis aut. Quidem voluptas vitae ipsam officia voluptatibus eveniet. Aspernatur cupiditate ratione aliquam quidem corrupti. Eos sunt rerum non optio culpa." upload: upload: diff -ur HTTP-Body-0.8.original/t/data/multipart/004-results.yml HTTP-Body-0.8/t/data/multipart/004-results.yml --- HTTP-Body-0.8.original/t/data/multipart/004-results.yml 2007-03-23 16:53:30.000000000 +0000 +++ HTTP-Body-0.8/t/data/multipart/004-results.yml 2007-03-25 23:09:32.000000000 +0100 @@ -5,6 +5,7 @@ - A - B text1: Ratione accusamus aspernatur aliquam + text2: "" textarea: "Voluptatem cumque voluptate sit recusandae at. Et quas facere rerum unde esse. Sit est et voluptatem. Vel temporibus velit neque odio non.\r\n\r\nMolestias rerum ut sapiente facere repellendus illo. Eum nulla quis aut. Quidem voluptas vitae ipsam officia voluptatibus eveniet. Aspernatur cupiditate ratione aliquam quidem corrupti. Eos sunt rerum non optio culpa." upload: upload: diff -ur HTTP-Body-0.8.original/t/data/multipart/005-results.yml HTTP-Body-0.8/t/data/multipart/005-results.yml --- HTTP-Body-0.8.original/t/data/multipart/005-results.yml 2007-03-23 16:53:30.000000000 +0000 +++ HTTP-Body-0.8/t/data/multipart/005-results.yml 2007-03-25 23:09:32.000000000 +0100 @@ -5,6 +5,7 @@ - A - B text1: Ratione accusamus aspernatur aliquam + text2: "" textarea: "Voluptatem cumque voluptate sit recusandae at. Et quas facere rerum unde esse. Sit est et voluptatem. Vel temporibus velit neque odio non.\r\n\r\nMolestias rerum ut sapiente facere repellendus illo. Eum nulla quis aut. Quidem voluptas vitae ipsam officia voluptatibus eveniet. Aspernatur cupiditate ratione aliquam quidem corrupti. Eos sunt rerum non optio culpa." upload: upload: diff -ur HTTP-Body-0.8.original/t/data/multipart/006-results.yml HTTP-Body-0.8/t/data/multipart/006-results.yml --- HTTP-Body-0.8.original/t/data/multipart/006-results.yml 2007-03-23 16:53:30.000000000 +0000 +++ HTTP-Body-0.8/t/data/multipart/006-results.yml 2007-03-25 23:09:32.000000000 +0100 @@ -5,6 +5,7 @@ - A - B text1: Ratione accusamus aspernatur aliquam + text2: "" textarea: "Voluptatem cumque voluptate sit recusandae at. Et quas facere rerum unde esse. Sit est et voluptatem. Vel temporibus velit neque odio non.\r\n\r\nMolestias rerum ut sapiente facere repellendus illo. Eum nulla quis aut. Quidem voluptas vitae ipsam officia voluptatibus eveniet. Aspernatur cupiditate ratione aliquam quidem corrupti. Eos sunt rerum non optio culpa." upload: upload: diff -ur HTTP-Body-0.8.original/t/data/multipart/007-results.yml HTTP-Body-0.8/t/data/multipart/007-results.yml --- HTTP-Body-0.8.original/t/data/multipart/007-results.yml 2007-03-23 16:53:30.000000000 +0000 +++ HTTP-Body-0.8/t/data/multipart/007-results.yml 2007-03-25 23:09:32.000000000 +0100 @@ -5,6 +5,7 @@ - A - B text1: Ratione accusamus aspernatur aliquam + text2: "" textarea: "Voluptatem cumque voluptate sit recusandae at. Et quas facere rerum unde esse. Sit est et voluptatem. Vel temporibus velit neque odio non.\r\n\r\nMolestias rerum ut sapiente facere repellendus illo. Eum nulla quis aut. Quidem voluptas vitae ipsam officia voluptatibus eveniet. Aspernatur cupiditate ratione aliquam quidem corrupti. Eos sunt rerum non optio culpa." upload: upload: diff -ur HTTP-Body-0.8.original/t/data/multipart/008-results.yml HTTP-Body-0.8/t/data/multipart/008-results.yml --- HTTP-Body-0.8.original/t/data/multipart/008-results.yml 2007-03-23 16:53:30.000000000 +0000 +++ HTTP-Body-0.8/t/data/multipart/008-results.yml 2007-03-25 23:09:32.000000000 +0100 @@ -5,6 +5,7 @@ - A - B text1: Ratione accusamus aspernatur aliquam + text2: "" textarea: "Voluptatem cumque voluptate sit recusandae at. Et quas facere rerum unde esse. Sit est et voluptatem. Vel temporibus velit neque odio non.\r\n\r\nMolestias rerum ut sapiente facere repellendus illo. Eum nulla quis aut. Quidem voluptas vitae ipsam officia voluptatibus eveniet. Aspernatur cupiditate ratione aliquam quidem corrupti. Eos sunt rerum non optio culpa." upload: upload: diff -ur HTTP-Body-0.8.original/t/data/multipart/009-results.yml HTTP-Body-0.8/t/data/multipart/009-results.yml --- HTTP-Body-0.8.original/t/data/multipart/009-results.yml 2007-03-23 16:53:30.000000000 +0000 +++ HTTP-Body-0.8/t/data/multipart/009-results.yml 2007-03-25 23:09:32.000000000 +0100 @@ -5,6 +5,7 @@ - A - B text1: Ratione accusamus aspernatur aliquam + text2: "" textarea: "Voluptatem cumque voluptate sit recusandae at. Et quas facere rerum unde esse. Sit est et voluptatem. Vel temporibus velit neque odio non.\r\n\r\nMolestias rerum ut sapiente facere repellendus illo. Eum nulla quis aut. Quidem voluptas vitae ipsam officia voluptatibus eveniet. Aspernatur cupiditate ratione aliquam quidem corrupti. Eos sunt rerum non optio culpa." upload: upload: diff -ur HTTP-Body-0.8.original/t/data/multipart/010-results.yml HTTP-Body-0.8/t/data/multipart/010-results.yml --- HTTP-Body-0.8.original/t/data/multipart/010-results.yml 2007-03-23 16:53:30.000000000 +0000 +++ HTTP-Body-0.8/t/data/multipart/010-results.yml 2007-03-25 23:09:32.000000000 +0100 @@ -5,6 +5,7 @@ - A - B text1: Ratione accusamus aspernatur aliquam + text2: "" textarea: "Voluptatem cumque voluptate sit recusandae at. Et quas facere rerum unde esse. Sit est et voluptatem. Vel temporibus velit neque odio non.\r\n\r\nMolestias rerum ut sapiente facere repellendus illo. Eum nulla quis aut. Quidem voluptas vitae ipsam officia voluptatibus eveniet. Aspernatur cupiditate ratione aliquam quidem corrupti. Eos sunt rerum non optio culpa." upload: upload: diff -ur HTTP-Body-0.8.original/t/data/multipart/011-results.yml HTTP-Body-0.8/t/data/multipart/011-results.yml --- HTTP-Body-0.8.original/t/data/multipart/011-results.yml 2007-03-23 16:53:30.000000000 +0000 +++ HTTP-Body-0.8/t/data/multipart/011-results.yml 2007-03-25 23:09:32.000000000 +0100 @@ -5,6 +5,7 @@ - A - B text1: Ratione accusamus aspernatur aliquam + text2: "" textarea: "Voluptatem cumque voluptate sit recusandae at. Et quas facere rerum unde esse. Sit est et voluptatem. Vel temporibus velit neque odio non.\r\n\r\nMolestias rerum ut sapiente facere repellendus illo. Eum nulla quis aut. Quidem voluptas vitae ipsam officia voluptatibus eveniet. Aspernatur cupiditate ratione aliquam quidem corrupti. Eos sunt rerum non optio culpa." upload: upload: