From 63b034e6232d1f440587df4b434204d04deacdfa Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Sun, 5 Aug 2012 18:29:22 +0000 Subject: [PATCH] udp can be unreliable even over localhost --- tests/simulator-udp.pl | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/tests/simulator-udp.pl b/tests/simulator-udp.pl index eb4d91dd7..cd92986f3 100755 --- a/tests/simulator-udp.pl +++ b/tests/simulator-udp.pl @@ -19,9 +19,17 @@ my $fd; sub msg { my ($l) = @_; my $cookie = $$ . '_' . rand_str(10); - send($fd, "$cookie $l", 0) or die $!; my $r; - recv($fd, $r, 0xffff, 0) or die $!; + while (1) { + send($fd, "$cookie $l", 0) or die $!; + my $err = ''; + alarm(1); + recv($fd, $r, 0xffff, 0) or $err = "$!"; + alarm(0); + $err =~ /interrupt/i and next; + $err and die $err; + last; + } $r =~ s/^\Q$cookie\E +//s or die $r; $r =~ s/[\r\n]+$//s; return $r; @@ -60,9 +68,11 @@ for my $iter (1 .. 1000) { my ($a, $b) = @$i; send($$fds[$a], 'rtp', 0, sockaddr_in($$outputs[$b][0], inet_aton($$outputs[$b][1]))) or die $!; my $x; + my $err = ''; alarm(1); - recv($$fds[$b], $x, 0xffff, 0) or die $!; + recv($$fds[$b], $x, 0xffff, 0) or $err = "$!"; alarm(0); + $err && $err !~ /interrupt/i and die $err; $x eq 'rtp' or die $x; } }