about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2019-06-20 01:03:47 +0000
committerEric Wong <e@80x24.org>2019-06-20 01:16:03 +0000
commit74dc166d18b5586689f21f6032196279e6db4db3 (patch)
treef2e1db396aa9467afdf92f827b8eebe46afa1b6a
parentce776800cdb29801bce7cf81d441fe9699a90afc (diff)
downloadpublic-inbox-74dc166d18b5586689f21f6032196279e6db4db3.tar.gz
It never has, AFAIK, but I'm making some changes to this code in
another branch and nearly introduced a bug where it would be
overreading and discarding the pipelined request.
-rw-r--r--t/httpd-corner.t15
1 files changed, 15 insertions, 0 deletions
diff --git a/t/httpd-corner.t b/t/httpd-corner.t
index 56e5a5bc..c1dc77db 100644
--- a/t/httpd-corner.t
+++ b/t/httpd-corner.t
@@ -123,6 +123,21 @@ my $spawn_httpd = sub {
         like($head, qr/\b413\b/, 'got 413 response');
 }
 
+{
+        my $conn = conn_for($sock, 'chunk with pipeline');
+        my $n = 10;
+        my $payload = 'b'x$n;
+        $conn->write("PUT /sha1 HTTP/1.1\r\nTransfer-Encoding: chunked\r\n");
+        $conn->write("\r\n".sprintf("%x\r\n", $n));
+        $conn->write($payload . "\r\n0\r\n\r\nGET /empty HTTP/1.0\r\n\r\n");
+        $conn->read(my $buf, 4096);
+        my $lim = 0;
+        $lim++ while ($conn->read($buf, 4096, bytes::length($buf)) && $lim < 9);
+        my $exp = sha1_hex($payload);
+        like($buf, qr!\r\n\r\n${exp}HTTP/1\.0 200 OK\r\n!s,
+                'chunk parser can handled pipelined requests');
+}
+
 # Unix domain sockets
 {
         my $u = IO::Socket::UNIX->new(Type => SOCK_STREAM, Peer => $upath);