Skip to content

Commit 7b1cb5c

Browse files
committed
Merge branch 'sp/maint-http-backend-die-triggers-die-recursively'
* sp/maint-http-backend-die-triggers-die-recursively: http-backend: Don't infinite loop during die()
2 parents 9b5a7c4 + 5856b5f commit 7b1cb5c

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

http-backend.c

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -538,15 +538,19 @@ static void service_rpc(char *service_name)
538538

539539
static NORETURN void die_webcgi(const char *err, va_list params)
540540
{
541-
char buffer[1000];
541+
static int dead;
542542

543-
http_status(500, "Internal Server Error");
544-
hdr_nocache();
545-
end_headers();
543+
if (!dead) {
544+
char buffer[1000];
545+
dead = 1;
546546

547-
vsnprintf(buffer, sizeof(buffer), err, params);
548-
fprintf(stderr, "fatal: %s\n", buffer);
549-
exit(0);
547+
vsnprintf(buffer, sizeof(buffer), err, params);
548+
fprintf(stderr, "fatal: %s\n", buffer);
549+
http_status(500, "Internal Server Error");
550+
hdr_nocache();
551+
end_headers();
552+
}
553+
exit(0); /* we successfully reported a failure ;-) */
550554
}
551555

552556
static char* getdir(void)

0 commit comments

Comments
 (0)