From a20cf868b3f30727a15b772a2bb8532b5b12b9a0 Mon Sep 17 00:00:00 2001 From: bel Date: Tue, 17 Mar 2015 01:39:19 +0100 Subject: [PATCH] Fix CGI environment variables (issue #75) --- src/civetweb.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/civetweb.c b/src/civetweb.c index 3408908f..9c50bb62 100644 --- a/src/civetweb.c +++ b/src/civetweb.c @@ -4532,15 +4532,17 @@ static void prepare_cgi_environment(struct mg_connection *conn, addenv(blk, "REQUEST_URI=%s", conn->request_info.uri); /* SCRIPT_NAME */ - assert(conn->request_info.uri[0] == '/'); - slash = strrchr(conn->request_info.uri, '/'); - if ((s = strrchr(prog, '/')) == NULL) - s = prog; - addenv(blk, "SCRIPT_NAME=%.*s%s", (int) (slash - conn->request_info.uri), - conn->request_info.uri, s); + addenv(blk, "SCRIPT_NAME=%.*s", + strlen(conn->request_info.uri) - ((conn->path_info == NULL) ? 0 : strlen(conn->path_info)), + conn->request_info.uri); addenv(blk, "SCRIPT_FILENAME=%s", prog); - addenv(blk, "PATH_TRANSLATED=%s", prog); + if (conn->path_info == NULL) { + addenv(blk, "PATH_TRANSLATED=%s", conn->ctx->config[DOCUMENT_ROOT]); + } else { + addenv(blk, "PATH_TRANSLATED=%s%s", conn->ctx->config[DOCUMENT_ROOT], conn->path_info); + } + addenv(blk, "HTTPS=%s", conn->ssl == NULL ? "off" : "on"); if ((s = mg_get_header(conn, "Content-Type")) != NULL)