diff options
author | Junio C Hamano <gitster@pobox.com> | 2010-04-09 22:38:16 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-04-09 22:38:16 -0700 |
commit | 326bea47cb7315a7ee8e428dbf6b1052ffb01b00 (patch) | |
tree | 5bca95de9df1acd0c6e7dffb24b68276f7efc86c | |
parent | fe7e37235dd9b36402afeccb24bbced933e847d7 (diff) | |
parent | 5856b5f568ba957a0ea094fa676641ab246021fc (diff) | |
download | git-326bea47cb7315a7ee8e428dbf6b1052ffb01b00.tar.gz |
Merge branch 'sp/maint-http-backend-die-triggers-die-recursively' into maint
* sp/maint-http-backend-die-triggers-die-recursively:
http-backend: Don't infinite loop during die()
-rw-r--r-- | http-backend.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/http-backend.c b/http-backend.c index 345c12b790..d1e83d0906 100644 --- a/http-backend.c +++ b/http-backend.c @@ -538,15 +538,19 @@ static void service_rpc(char *service_name) static NORETURN void die_webcgi(const char *err, va_list params) { - char buffer[1000]; + static int dead; - http_status(500, "Internal Server Error"); - hdr_nocache(); - end_headers(); + if (!dead) { + char buffer[1000]; + dead = 1; - vsnprintf(buffer, sizeof(buffer), err, params); - fprintf(stderr, "fatal: %s\n", buffer); - exit(0); + vsnprintf(buffer, sizeof(buffer), err, params); + fprintf(stderr, "fatal: %s\n", buffer); + http_status(500, "Internal Server Error"); + hdr_nocache(); + end_headers(); + } + exit(0); /* we successfully reported a failure ;-) */ } static char* getdir(void) |