X-Git-Url: http://git.samba.org/samba.git/?p=bbaumbach%2Fsamba-autobuild%2F.git;a=blobdiff_plain;f=source4%2Fweb_server%2Fwsgi.c;fp=source4%2Fweb_server%2Fwsgi.c;h=17ad65afe41276781bd583573656688dd892d46e;hp=615726ad7ac2ea730f707b09afc8a56d1d417727;hb=2618d67fe5eda1e86f90de2fcde90c048fbcd50b;hpb=ad252fb2f5b403001a283aff58773b8b429be145 diff --git a/source4/web_server/wsgi.c b/source4/web_server/wsgi.c index 615726ad7ac..17ad65afe41 100644 --- a/source4/web_server/wsgi.c +++ b/source4/web_server/wsgi.c @@ -410,6 +410,22 @@ error: return NULL; } +static void wsgi_serve_500(struct websrv_context *web) +{ + struct http_header *headers = NULL; + const char *contents[] = { + "An internal server error occurred while handling this request. ", + "Please refer to the server logs for more details. ", + NULL + }; + int i; + + websrv_output_headers(web, "500 Internal Server Error", headers); + for (i = 0; contents[i]; i++) { + websrv_output(web, contents[i], strlen(contents[i])); + } +} + static void wsgi_process_http_input(struct web_server_data *wdata, struct websrv_context *web) { @@ -453,6 +469,7 @@ static void wsgi_process_http_input(struct web_server_data *wdata, if (py_environ == NULL) { DEBUG_Print_PyError(0, "Unable to create WSGI environment object"); + wsgi_serve_500(web); return; } @@ -461,6 +478,7 @@ static void wsgi_process_http_input(struct web_server_data *wdata, if (result == NULL) { DEBUG_Print_PyError(0, "error while handling request"); + wsgi_serve_500(web); return; } @@ -469,6 +487,7 @@ static void wsgi_process_http_input(struct web_server_data *wdata, if (iter == NULL) { DEBUG_Print_PyError(0, "application did not return iterable"); + wsgi_serve_500(web); return; }