Skip to content

Commit

Permalink
improve Mojo::Message to generate slightly smaller HTTP messages (closes
Browse files Browse the repository at this point in the history
  • Loading branch information
kraih committed Aug 12, 2015
1 parent 97f6f44 commit 122d1a3
Show file tree
Hide file tree
Showing 5 changed files with 6 additions and 15 deletions.
3 changes: 2 additions & 1 deletion Changes
@@ -1,5 +1,6 @@

6.15 2015-08-08
6.15 2015-08-12
- Improved Mojo::Message to generate slightly smaller HTTP messages.
- Fixed warnings in Mojo::DOM.

6.14 2015-07-12
Expand Down
4 changes: 2 additions & 2 deletions lib/Mojo/Message.pm
Expand Up @@ -99,8 +99,8 @@ sub fix_headers {
my $headers = $content->headers;
if ($content->is_multipart) { $headers->remove('Content-Length') }
elsif ($content->is_chunked || $headers->content_length) { return $self }
if ($content->is_dynamic) { $headers->connection('close') }
else { $headers->content_length($self->body_size) }
if ($content->is_dynamic) { $headers->connection('close') }
elsif (my $size = $self->body_size) { $headers->content_length($size) }

return $self;
}
Expand Down
4 changes: 0 additions & 4 deletions t/mojo/request.t
Expand Up @@ -1248,7 +1248,6 @@ is $req->url->to_abs, 'http://example.com/demo', 'right absolute URL';
is $req->headers->connection, 'Upgrade', 'right "Connection" value';
is $req->headers->upgrade, 'websocket', 'right "Upgrade" value';
is $req->headers->host, 'example.com', 'right "Host" value';
is $req->headers->content_length, 0, 'right "Content-Length" value';
is $req->headers->sec_websocket_accept, 'abcdef=',
'right "Sec-WebSocket-Key" value';
is $req->headers->sec_websocket_protocol, 'sample',
Expand Down Expand Up @@ -1276,7 +1275,6 @@ is $req->url->to_abs, 'http://example.com/demo', 'right absolute URL';
is $req->headers->connection, 'Upgrade', 'right "Connection" value';
is $req->headers->upgrade, 'websocket', 'right "Upgrade" value';
is $req->headers->host, 'example.com', 'right "Host" value';
is $req->headers->content_length, 0, 'right "Content-Length" value';
is $req->headers->sec_websocket_accept, 'abcdef=',
'right "Sec-WebSocket-Key" value';
is $req->headers->sec_websocket_protocol, 'sample',
Expand All @@ -1292,7 +1290,6 @@ is $clone->url->to_abs, 'http://example.com/demo', 'right absolute URL';
is $clone->headers->connection, 'Upgrade', 'right "Connection" value';
is $clone->headers->upgrade, 'websocket', 'right "Upgrade" value';
is $clone->headers->host, 'example.com', 'right "Host" value';
is $clone->headers->content_length, 0, 'right "Content-Length" value';
is $clone->headers->sec_websocket_accept, 'abcdef=',
'right "Sec-WebSocket-Key" value';
is $clone->headers->sec_websocket_protocol, 'sample',
Expand All @@ -1319,7 +1316,6 @@ is $req->url->to_abs, 'http://example.com/demo', 'right absolute URL';
is $req->headers->connection, 'Upgrade', 'right "Connection" value';
is $req->headers->upgrade, 'websocket', 'right "Upgrade" value';
is $req->headers->host, 'example.com', 'right "Host" value';
is $req->headers->content_length, 0, 'right "Content-Length" value';
is $req->headers->sec_websocket_accept, 'abcdef=',
'right "Sec-WebSocket-Key" value';
is $req->headers->sec_websocket_protocol, 'sample',
Expand Down
7 changes: 1 addition & 6 deletions t/mojo/response.t
Expand Up @@ -671,7 +671,6 @@ is $res->code, '404', 'right status';
is $res->message, 'Not Found', 'right message';
is $res->version, '1.1', 'right version';
is $res->headers->date, 'Sun, 17 Aug 2008 16:27:35 GMT', 'right "Date" value';
is $res->headers->content_length, 0, 'right "Content-Length" value';

# Build HTTP 1.1 response start-line with minimal headers (strange message)
$res = Mojo::Message::Response->new;
Expand All @@ -684,7 +683,6 @@ is $res->code, '404', 'right status';
is $res->message, 'Looks-0k!@ ;\':" #$%^<>,.\\o/ &*()', 'right message';
is $res->version, '1.1', 'right version';
is $res->headers->date, 'Sun, 17 Aug 2008 16:27:35 GMT', 'right "Date" value';
is $res->headers->content_length, 0, 'right "Content-Length" value';

# Build HTTP 1.1 response start-line and header
$res = Mojo::Message::Response->new;
Expand All @@ -698,7 +696,6 @@ is $res->message, 'OK', 'right message';
is $res->version, '1.1', 'right version';
is $res->headers->connection, 'keep-alive', 'right "Connection" value';
is $res->headers->date, 'Sun, 17 Aug 2008 16:27:35 GMT', 'right "Date" value';
is $res->headers->content_length, 0, 'right "Content-Length" value';

# Build full HTTP 1.1 response
$res = Mojo::Message::Response->new;
Expand Down Expand Up @@ -879,8 +876,7 @@ is $res->message, 'Switching Protocols', 'right message';
is $res->version, '1.1', 'right version';
is $res->headers->connection, 'Upgrade', 'right "Connection" value';
is $res->headers->date, 'Sun, 17 Aug 2008 16:27:35 GMT', 'right "Date" value';
is $res->headers->upgrade, 'websocket', 'right "Upgrade" value';
is $res->headers->content_length, 0, 'right "Content-Length" value';
is $res->headers->upgrade, 'websocket', 'right "Upgrade" value';
is $res->headers->sec_websocket_accept, 'abcdef=',
'right "Sec-WebSocket-Accept" value';
is $res->headers->sec_websocket_protocol, 'sample',
Expand All @@ -902,7 +898,6 @@ $res2->parse($res->to_string);
ok $res2->is_finished, 'response is finished';
is $res2->code, 404, 'right status';
is $res2->version, '1.1', 'right version';
is $res2->headers->content_length, 0, 'right "Content-Length" value';
ok defined $res2->cookie('foo'), 'cookie "foo" exists';
ok defined $res2->cookie('bar'), 'cookie "bar" exists';
ok defined $res2->cookie('baz'), 'cookie "baz" exists';
Expand Down
3 changes: 1 addition & 2 deletions t/mojolicious/static_lite_app.t
Expand Up @@ -173,8 +173,7 @@ $t->get_ok('/asset' => {'Range' => 'bytes=3-5'})->status_is(206)

# Empty file
$t->get_ok('/hello4.txt')->status_is(200)
->header_is(Server => 'Mojolicious (Perl)')
->header_is('Content-Length' => 0)->content_is('');
->header_is(Server => 'Mojolicious (Perl)')->content_is('');

# Partial empty file
$t->get_ok('/hello4.txt' => {Range => 'bytes=0-0'})->status_is(416)
Expand Down

0 comments on commit 122d1a3

Please sign in to comment.