X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=cgi.c;h=024a6e419fb7877770e654c31890f9ef8317a224;hp=20f2fc422639e311e4838d723d48c577232ee44b;hb=5ba3e3591b73adcb5d3c6461892e3ab3af4efe2e;hpb=effa99e4df3dbc95aafd3dd940c0454ca0a2ce44 diff --git a/cgi.c b/cgi.c index 20f2fc42..024a6e41 100644 --- a/cgi.c +++ b/cgi.c @@ -1,4 +1,4 @@ -const char cgi_rcs[] = "$Id: cgi.c,v 1.122 2009/06/11 11:47:16 fabiankeil Exp $"; +const char cgi_rcs[] = "$Id: cgi.c,v 1.129 2010/05/24 11:38:22 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/cgi.c,v $ @@ -553,7 +553,7 @@ static struct http_response *dispatch_known_cgi(struct client_state * csp, if (!err) { /* It worked */ - rsp->reason = RSP_REASON_CGI_CALL; + rsp->crunch_reason = CGI_CALL; return finish_http_response(csp, rsp); } else @@ -876,7 +876,7 @@ struct http_response *error_response(struct client_state *csp, if (!strcmp(templatename, "no-such-domain")) { rsp->status = strdup("404 No such domain"); - rsp->reason = RSP_REASON_NO_SUCH_DOMAIN; + rsp->crunch_reason = NO_SUCH_DOMAIN; } else if (!strcmp(templatename, "forwarding-failed")) { @@ -930,30 +930,30 @@ struct http_response *error_response(struct client_state *csp, if (!err) err = map(exports, "forwarding-type", 1, socks_type, 1); if (!err) err = map(exports, "error-message", 1, html_encode(csp->error_message), 0); - if ((NULL == csp->error_message) || err) { free_map(exports); free_http_response(rsp); return cgi_error_memory(); } - if (!err) rsp->status = strdup("503 Forwarding failure"); - rsp->reason = RSP_REASON_FORWARDING_FAILED; + + rsp->status = strdup("503 Forwarding failure"); + rsp->crunch_reason = FORWARDING_FAILED; } else if (!strcmp(templatename, "connect-failed")) { rsp->status = strdup("503 Connect failed"); - rsp->reason = RSP_REASON_CONNECT_FAILED; + rsp->crunch_reason = CONNECT_FAILED; } else if (!strcmp(templatename, "connection-timeout")) { rsp->status = strdup("504 Connection timeout"); - rsp->reason = RSP_REASON_CONNECTION_TIMEOUT; + rsp->crunch_reason = CONNECTION_TIMEOUT; } else if (!strcmp(templatename, "no-server-data")) { rsp->status = strdup("502 No data received from server or forwarder"); - rsp->reason = RSP_REASON_NO_SERVER_DATA; + rsp->crunch_reason = NO_SERVER_DATA; } if (rsp->status == NULL) @@ -1053,7 +1053,7 @@ void cgi_init_error_messages(void) strlen(cgi_error_memory_response->head); cgi_error_memory_response->content_length = strlen(cgi_error_memory_response->body); - cgi_error_memory_response->reason = RSP_REASON_OUT_OF_MEMORY; + cgi_error_memory_response->crunch_reason = OUT_OF_MEMORY; } @@ -1224,7 +1224,7 @@ jb_err cgi_error_unknown(const struct client_state *csp, rsp->content_length = 0; rsp->head_length = 0; rsp->is_static = 0; - rsp->reason = RSP_REASON_INTERNAL_ERROR; + rsp->crunch_reason = INTERNAL_ERROR; snprintf(errnumbuf, sizeof(errnumbuf), "%d", error_to_report); @@ -1362,7 +1362,7 @@ char *add_help_link(const char *item, string_join (&result, string_toupper(item)); string_append(&result, "\">"); string_append(&result, item); - string_append(&result, " "); + string_append(&result, ""); return result; } @@ -1622,7 +1622,9 @@ struct http_response *finish_http_response(const struct client_state *csp, struc if (!err) err = enlist_unique_header(rsp->headers, "Date", buf); if (!strncmpic(rsp->status, "403", 3) || !strncmpic(rsp->status, "404", 3) - || !strncmpic(rsp->status, "503", 3)) + || !strncmpic(rsp->status, "502", 3) + || !strncmpic(rsp->status, "503", 3) + || !strncmpic(rsp->status, "504", 3)) { if (!err) err = enlist_unique_header(rsp->headers, "Last-Modified", "Wed, 08 Jun 1955 12:00:00 GMT"); } @@ -1634,13 +1636,10 @@ struct http_response *finish_http_response(const struct client_state *csp, struc if (!err) err = enlist_unique_header(rsp->headers, "Pragma", "no-cache"); } - /* - * Quoting RFC 2616: - * - * HTTP/1.1 applications that do not support persistent connections MUST - * include the "close" connection option in every message. - */ - if (!err) err = enlist_unique_header(rsp->headers, "Connection", "close"); + if (!err && !(csp->flags & CSP_FLAG_CLIENT_CONNECTION_KEEP_ALIVE)) + { + err = enlist_unique_header(rsp->headers, "Connection", "close"); + } /* * Write the head @@ -1863,7 +1862,7 @@ jb_err template_load(const struct client_state *csp, char **template_ptr, * HTML template by replacing @name@ with value using * pcrs, for each item in the output map. * - * Note that a leading '$' charachter in the export map's + * Note that a leading '$' character in the export map's * values will be stripped and toggle on backreference * interpretation. *