changeset 1574:42e37e0434d5

Tests: stream udp tests with zero-length payload (ticket #1982).
author Sergey Kandaurov <pluknet@nginx.com>
date Wed, 10 Jun 2020 15:35:20 +0300
parents d7e83ce613c2
children 577e72267fec
files stream_udp_proxy.t
diffstat 1 files changed, 26 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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('');
+		}
 	}
 }