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; } }