# HG changeset patch # User Sergey Kandaurov # Date 1591792520 -10800 # Node ID 42e37e0434d578a1b2886bc0bd2f95b6a4a4678a # Parent d7e83ce613c297ddbae3363282842f8a0ed8171a Tests: stream udp tests with zero-length payload (ticket #1982). diff --git a/stream_udp_proxy.t b/stream_udp_proxy.t --- a/stream_udp_proxy.t +++ b/stream_udp_proxy.t @@ -22,7 +22,7 @@ use Test::Nginx::Stream qw/ dgram /; 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 @@ is($s->io('2', read => 2), '12', 'proxy $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 @@ sub udp_daemon { 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(''); + } } }