Skip to content

Commit

Permalink
Avoid uninitialized warnings in Request.pm and Response.pm
Browse files Browse the repository at this point in the history
Silence carp about void content call in t/message.t
  • Loading branch information
openstrike committed Jul 28, 2017
1 parent ffa7f73 commit a7c6ba1
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 16 deletions.
12 changes: 7 additions & 5 deletions lib/HTTP/Request.pm
Expand Up @@ -19,7 +19,7 @@ sub parse
{
my($class, $str) = @_;
my $request_line;
if ($str =~ s/^(.*)\n//) {
if (defined $str && $str =~ s/^(.*)\n//) {
$request_line = $1;
}
else {
Expand All @@ -28,10 +28,12 @@ sub parse
}

my $self = $class->SUPER::parse($str);
my($method, $uri, $protocol) = split(' ', $request_line);
$self->method($method) if defined($method);
$self->uri($uri) if defined($uri);
$self->protocol($protocol) if $protocol;
if (defined $request_line) {
my($method, $uri, $protocol) = split(' ', $request_line);
$self->method($method) if defined($method);
$self->uri($uri) if defined($uri);
$self->protocol($protocol) if $protocol;
}
$self;
}

Expand Down
22 changes: 12 additions & 10 deletions lib/HTTP/Response.pm
Expand Up @@ -22,7 +22,7 @@ sub parse
{
my($class, $str) = @_;
my $status_line;
if ($str =~ s/^(.*)\n//) {
if (defined $str && $str =~ s/^(.*)\n//) {
$status_line = $1;
}
else {
Expand All @@ -31,16 +31,18 @@ sub parse
}

my $self = $class->SUPER::parse($str);
my($protocol, $code, $message);
if ($status_line =~ /^\d{3} /) {
# Looks like a response created by HTTP::Response->new
($code, $message) = split(' ', $status_line, 2);
} else {
($protocol, $code, $message) = split(' ', $status_line, 3);
if (defined $status_line) {
my($protocol, $code, $message);
if ($status_line =~ /^\d{3} /) {
# Looks like a response created by HTTP::Response->new
($code, $message) = split(' ', $status_line, 2);
} else {
($protocol, $code, $message) = split(' ', $status_line, 3);
}
$self->protocol($protocol) if $protocol;
$self->code($code) if defined($code);
$self->message($message) if defined($message);
}
$self->protocol($protocol) if $protocol;
$self->code($code) if defined($code);
$self->message($message) if defined($message);
$self;
}

Expand Down
5 changes: 4 additions & 1 deletion t/message.t
Expand Up @@ -571,7 +571,10 @@ $m = HTTP::Message->new(['Content-Encoding' => 'zog']);
is($m->decode, 0);
$m = HTTP::Message->new;
ok($m->decode);
$m->content;
{
local $SIG{__WARN__} = sub {};
$m->content;
}
is($m->content(undef), '');
eval { $m->content(\'foo'); };
like($@, qr/Can't set content to be a scalar reference/);
Expand Down

0 comments on commit a7c6ba1

Please sign in to comment.