From 18112405879e57adc111a2cb68b8c7bde09c2ac1 Mon Sep 17 00:00:00 2001 From: valenok Date: Sun, 19 Sep 2010 13:00:49 +0100 Subject: [PATCH] exporting correct SCRIPT_FILENAME for CGI --- mongoose.c | 15 ++++++++------- test/test.pl | 2 ++ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/mongoose.c b/mongoose.c index 36dfad33..fd19afad 100644 --- a/mongoose.c +++ b/mongoose.c @@ -210,8 +210,9 @@ typedef int SOCKET; #if defined(DEBUG) #define DEBUG_TRACE(x) do { \ flockfile(stdout); \ - printf("*** [%lu] thread %p: %s: ", \ - (unsigned long) time(NULL), (void *) pthread_self(), __func__); \ + printf("*** %lu.%p.%s.%d: ", \ + (unsigned long) time(NULL), (void *) pthread_self(), \ + __func__, __LINE__); \ printf x; \ putchar('\n'); \ fflush(stdout); \ @@ -743,7 +744,6 @@ static void send_http_error(struct mg_connection *conn, int status, va_list ap; int len; - DEBUG_TRACE(("%d %s", status, reason)); conn->request_info.status_code = status; if (call_user(conn, MG_HTTP_ERROR) == NULL) { @@ -757,9 +757,10 @@ static void send_http_error(struct mg_connection *conn, int status, buf[len++] = '\n'; va_start(ap, fmt); - mg_vsnprintf(conn, buf + len, sizeof(buf) - len, fmt, ap); + len += mg_vsnprintf(conn, buf + len, sizeof(buf) - len, fmt, ap); va_end(ap); } + DEBUG_TRACE(("[%s]", buf)); mg_printf(conn, "HTTP/1.1 %d %s\r\n" "Content-Type: text/plain\r\n" @@ -2777,7 +2778,7 @@ static void prepare_cgi_environment(struct mg_connection *conn, (slash - conn->request_info.uri) + 1, conn->request_info.uri, script_filename); - addenv(blk, "SCRIPT_FILENAME=%s", script_filename); + addenv(blk, "SCRIPT_FILENAME=%s", prog); addenv(blk, "PATH_TRANSLATED=%s", prog); addenv(blk, "HTTPS=%s", conn->ssl == NULL ? "off" : "on"); @@ -2898,8 +2899,8 @@ static void handle_cgi_request(struct mg_connection *conn, const char *prog) { buf, sizeof(buf), &data_len); if (headers_len <= 0) { send_http_error(conn, 500, http_500_error, - "CGI program sent malformed HTTP headers: [%.*s]", - data_len, buf); + "CGI program sent malformed HTTP headers: [%.*s]", + data_len, buf); goto done; } pbuf = buf; diff --git a/test/test.pl b/test/test.pl index 82eb4a68..1edf4cda 100644 --- a/test/test.pl +++ b/test/test.pl @@ -210,6 +210,8 @@ write_file($path, read_file($root . $dir_separator . 'env.cgi')); chmod 0755, $path; o("GET /$test_dir_uri/x/ HTTP/1.0\n\n", "Content-Type: text/html\r\n\r\n", 'index.cgi execution'); +o("GET /$test_dir_uri/x/ HTTP/1.0\n\n", + "SCRIPT_FILENAME=test/test_dir/x/index.cgi", 'SCRIPT_FILENAME'); o("GET /ta/x/ HTTP/1.0\n\n", "SCRIPT_NAME=/ta/x/index.cgi", 'Aliases SCRIPT_NAME'); #o("GET /hello.txt HTTP/1.1\n\n GET /hello.txt HTTP/1.0\n\n",