Tests: stream udp tests with zero-length payload (ticket #1982).
diff --git a/stream_udp_proxy.t b/stream_udp_proxy.t
index fb0ac79..2cd8303 100644
--- a/stream_udp_proxy.t
+++ b/stream_udp_proxy.t
@@ -22,7 +22,7 @@
select STDERR; $| = 1;
select STDOUT; $| = 1;
-my $t = Test::Nginx->new()->has(qw/stream udp/)->plan(4)
+my $t = Test::Nginx->new()->has(qw/stream udp/)->plan(8)
->write_file_expand('nginx.conf', <<'EOF');
%%TEST_GLOBALS%%
@@ -75,6 +75,22 @@
$s = dgram('127.0.0.1:' . port(8983));
is($s->io('3', read => 3), '123', 'proxy responses default');
+# zero-length payload
+
+TODO: {
+local $TODO = 'not yet' unless $t->has_version('1.19.1');
+
+$s = dgram('127.0.0.1:' . port(8982));
+$s->write('');
+is($s->read(), 'zero', 'upstream read zero bytes');
+is($s->read(), '', 'upstream sent zero bytes');
+
+$s->write('');
+is($s->read(), 'zero', 'upstream read zero bytes again');
+is($s->read(), '', 'upstream sent zero bytes again');
+
+}
+
###############################################################################
sub udp_daemon {
@@ -94,7 +110,15 @@
while (1) {
$server->recv(my $buffer, 65536);
- $server->send($_) for (1 .. $buffer);
+
+ if (length($buffer) > 0) {
+ $server->send($_) for (1 .. $buffer);
+
+ } else {
+ $server->send('zero');
+ select undef, undef, undef, 0.2;
+ $server->send('');
+ }
}
}