|  | @@ -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;
 |