Commits

Anonymous committed 326bea4 Merge

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()

Comments (0)

Files changed (1)

 
 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)