Skip to content

Commit 3f6de7a

Browse files
committed
Tests: fixed grpc tests hang in accept() on internal nginx error.
1 parent 4594cb4 commit 3f6de7a

File tree

3 files changed

+42
-3
lines changed

3 files changed

+42
-3
lines changed

grpc.t

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,20 @@ sub grpc {
463463
{ name => 'te', value => 'trailers', mode => 2 }]});
464464

465465
if (!$extra{reuse}) {
466-
$client = $server->accept() or return;
466+
eval {
467+
local $SIG{ALRM} = sub { die "timeout\n" };
468+
alarm(5);
469+
470+
$client = $server->accept() or return;
471+
472+
alarm(0);
473+
};
474+
alarm(0);
475+
if ($@) {
476+
log_in("died: $@");
477+
return undef;
478+
}
479+
467480
log2c("(new connection $client)");
468481
$n++;
469482

grpc_request_buffering.t

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,20 @@ sub grpc {
102102
{ name => 'content-length', value => '5' }]});
103103

104104
if (!$extra{reuse}) {
105-
$client = $server->accept() or return;
105+
eval {
106+
local $SIG{ALRM} = sub { die "timeout\n" };
107+
alarm(5);
108+
109+
$client = $server->accept() or return;
110+
111+
alarm(0);
112+
};
113+
alarm(0);
114+
if ($@) {
115+
log_in("died: $@");
116+
return undef;
117+
}
118+
106119
log2c("(new connection $client)");
107120

108121
$client->sysread(my $buf, 24) == 24 or return; # preface

grpc_ssl.t

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,20 @@ sub grpc {
241241
{ name => 'te', value => 'trailers', mode => 2 }]});
242242

243243
if (!$extra{reuse}) {
244-
$client = $server->accept() or return;
244+
eval {
245+
local $SIG{ALRM} = sub { die "timeout\n" };
246+
alarm(5);
247+
248+
$client = $server->accept() or return;
249+
250+
alarm(0);
251+
};
252+
alarm(0);
253+
if ($@) {
254+
log_in("died: $@");
255+
return undef;
256+
}
257+
245258
log2c("(new connection $client)");
246259

247260
$client->sysread(my $buf, 24) == 24 or return; # preface

0 commit comments

Comments
 (0)