Skip to content

Commit

Permalink
stringify cookies before parsing them
Browse files Browse the repository at this point in the history
  • Loading branch information
kraih committed Mar 20, 2015
1 parent b9d985f commit cdd197a
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 9 deletions.
10 changes: 5 additions & 5 deletions lib/Mojo/Util.pm
Expand Up @@ -392,21 +392,21 @@ sub _header {
my ($str, $cookie) = @_;

my (@tree, @part);
while ($str =~ s/^[,;\s]*([^=;, ]+)\s*//) {
while ($str =~ /\G[,;\s]*([^=;, ]+)\s*/gc) {
push @part, $1, undef;
my $expires = $cookie && @part > 2 && lc $1 eq 'expires';

# Special "expires" value
if ($expires && $str =~ s/^=\s*$EXPIRES_RE//o) { $part[-1] = $1 }
if ($expires && $str =~ /\G=\s*$EXPIRES_RE/gco) { $part[-1] = $1 }

# Quoted value
elsif ($str =~ s/^=\s*("(?:\\\\|\\"|[^"])*")//) { $part[-1] = unquote $1 }
elsif ($str =~ /\G=\s*("(?:\\\\|\\"|[^"])*")/gc) { $part[-1] = unquote $1 }

# Unquoted value
elsif ($str =~ s/^=\s*([^;, ]*)//) { $part[-1] = $1 }
elsif ($str =~ /\G=\s*([^;, ]*)/gc) { $part[-1] = $1 }

# Separator
next unless $str =~ s/^[;\s]*,\s*//;
next unless $str =~ /\G[;\s]*,\s*/gc;
push @tree, [@part];
@part = ();
}
Expand Down
8 changes: 4 additions & 4 deletions t/mojo/cookie.t
Expand Up @@ -261,7 +261,7 @@ is $cookies->[0]->max_age, 60, 'right max age value';
is $cookies->[0]->expires, 1218092879, 'right expires value';
is $cookies->[0]->secure, 1, 'right secure flag';
is $cookies->[1], undef, 'no more cookies';
$cookies = Mojo::Cookie::Response->parse($cookies->[0]);
$cookies = Mojo::Cookie::Response->parse($cookies->[0]->to_string);
is $cookies->[0]->name, 'foo', 'right name';
is $cookies->[0]->value, 'b ,a";= r"\\', 'right value';
is $cookies->[0]->domain, 'example.com', 'right domain';
Expand All @@ -284,7 +284,7 @@ is $cookies->[0]->max_age, 60, 'right max age value';
is $cookies->[0]->expires, 1218092879, 'right expires value';
is $cookies->[0]->secure, 1, 'right secure flag';
is $cookies->[1], undef, 'no more cookies';
$cookies = Mojo::Cookie::Response->parse($cookies->[0]);
$cookies = Mojo::Cookie::Response->parse($cookies->[0]->to_string);
is $cookies->[0]->name, 'foo', 'right name';
is $cookies->[0]->value, 'b ,a" r"\\', 'right value';
is $cookies->[0]->domain, 'example.com', 'right domain';
Expand All @@ -307,7 +307,7 @@ is $cookies->[0]->max_age, 60, 'right max age value';
is $cookies->[0]->expires, 1218092879, 'right expires value';
is $cookies->[0]->secure, 1, 'right secure flag';
is $cookies->[1], undef, 'no more cookies';
$cookies = Mojo::Cookie::Response->parse($cookies->[0]);
$cookies = Mojo::Cookie::Response->parse($cookies->[0]->to_string);
is $cookies->[0]->name, 'foo', 'right name';
is $cookies->[0]->value, 'b ;a" r"\\', 'right value';
is $cookies->[0]->domain, 'example.com', 'right domain';
Expand All @@ -330,7 +330,7 @@ is $cookies->[0]->max_age, 60, 'right max age value';
is $cookies->[0]->expires, 1218092879, 'right expires value';
is $cookies->[0]->secure, 1, 'right secure flag';
is $cookies->[1], undef, 'no more cookies';
$cookies = Mojo::Cookie::Response->parse($cookies->[0]);
$cookies = Mojo::Cookie::Response->parse($cookies->[0]->to_string);
is $cookies->[0]->name, 'foo', 'right name';
is $cookies->[0]->value, '"b a" r"', 'right value';
is $cookies->[0]->domain, 'example.com', 'right domain';
Expand Down

0 comments on commit cdd197a

Please sign in to comment.