summaryrefslogtreecommitdiff
path: root/source4/web_server/http.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/web_server/http.c')
-rw-r--r--source4/web_server/http.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/source4/web_server/http.c b/source4/web_server/http.c
index 7bb45afc1e..7aa99b09f6 100644
--- a/source4/web_server/http.c
+++ b/source4/web_server/http.c
@@ -501,6 +501,7 @@ static void esp_request(struct esp_state *esp, const char *url)
return;
}
#endif
+
res = espProcessRequest(esp->req, url, buf, &emsg);
if (res != 0 && emsg) {
http_writeBlock(web, "<pre>", 5);
@@ -866,6 +867,12 @@ void http_process_input(struct websrv_context *web)
}
}
+ if (web->conn == NULL) {
+ /* the connection has been terminated above us, probably
+ via a timeout */
+ goto internal_error;
+ }
+
if (!web->output.output_pending) {
http_output_headers(web);
EVENT_FD_WRITEABLE(web->conn->event.fde);
@@ -909,7 +916,9 @@ void http_process_input(struct websrv_context *web)
internal_error:
mprSetCtx(esp);
talloc_free(esp);
- http_error(web, 500, "Internal server error");
+ if (web->conn != NULL) {
+ http_error(web, 500, "Internal server error");
+ }
mprSetCtx(save_mpr_ctx);
ejs_restore_state(ejs_save);
}