From: Fabian Keil Date: Wed, 7 Feb 2007 10:45:22 +0000 (+0000) Subject: - Save the reason for generating http_responses. X-Git-Tag: v_3_0_7~346 X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=commitdiff_plain;h=048db68f0449f4b4a10eb56ad6e07e55fb475b2c;ds=sidebyside - Save the reason for generating http_responses. - Fix --disable-toggle (again). - Use TBL birthday hack for 403 responses as well. - Uglify the @menu@ again to fix JavaScript errors on the "blocked" template. - Escape an ampersand in cgi_error_unknown(). --- diff --git a/cgi.c b/cgi.c index e377ad29..7816c37a 100644 --- a/cgi.c +++ b/cgi.c @@ -1,4 +1,4 @@ -const char cgi_rcs[] = "$Id: cgi.c,v 1.91 2007/01/27 13:09:16 fabiankeil Exp $"; +const char cgi_rcs[] = "$Id: cgi.c,v 1.92 2007/01/28 13:41:17 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/cgi.c,v $ @@ -38,6 +38,10 @@ const char cgi_rcs[] = "$Id: cgi.c,v 1.91 2007/01/27 13:09:16 fabiankeil Exp $"; * * Revisions : * $Log: cgi.c,v $ + * Revision 1.92 2007/01/28 13:41:17 fabiankeil + * - Add HEAD support to finish_http_response. + * - Add error favicon to internal HTML error messages. + * * Revision 1.91 2007/01/27 13:09:16 fabiankeil * Add new config option "templdir" to * change the templates directory. @@ -1017,10 +1021,6 @@ static struct http_response *dispatch_known_cgi(struct client_state * csp, return cgi_error_memory(); } - log_error(LOG_LEVEL_GPC, "%s%s cgi call", csp->http->hostport, csp->http->path); - log_error(LOG_LEVEL_CLF, "%s - - [%T] \"%s\" 200 3", - csp->ip_addr_str, csp->http->cmd); - /* * Find and start the right CGI function */ @@ -1070,6 +1070,7 @@ static struct http_response *dispatch_known_cgi(struct client_state * csp, if (!err) { /* It worked */ + rsp->reason = RSP_REASON_CGI_CALL; return finish_http_response(csp, rsp); } else @@ -1357,11 +1358,13 @@ struct http_response *error_response(struct client_state *csp, return cgi_error_memory(); } +#ifdef FEATURE_FORCE_LOAD if (csp->flags & CSP_FLAG_FORCED) { path = strdup(FORCE_PREFIX); } else +#endif /* def FEATURE_FORCE_LOAD */ { path = strdup(""); } @@ -1399,6 +1402,7 @@ struct http_response *error_response(struct client_state *csp, free_http_response(rsp); return cgi_error_memory(); } + rsp->reason = RSP_REASON_NO_SUCH_DOMAIN; } else if (!strcmp(templatename, "forwarding-failed")) { @@ -1439,6 +1443,7 @@ struct http_response *error_response(struct client_state *csp, free_http_response(rsp); return cgi_error_memory(); } + rsp->reason = RSP_REASON_FORWARDING_FAILED; } else if (!strcmp(templatename, "connect-failed")) { @@ -1449,6 +1454,7 @@ struct http_response *error_response(struct client_state *csp, free_http_response(rsp); return cgi_error_memory(); } + rsp->reason = RSP_REASON_CONNECT_FAILED; } err = template_fill_for_cgi(csp, templatename, exports, rsp); @@ -1541,6 +1547,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; } @@ -1690,7 +1697,7 @@ jb_err cgi_error_unknown(struct client_state *csp, static const char body_suffix[] = "

\r\n" "

Please " - "" + "" "file a bug report.

\r\n" "\r\n" "\r\n"; @@ -1705,6 +1712,7 @@ jb_err cgi_error_unknown(struct client_state *csp, rsp->content_length = 0; rsp->head_length = 0; rsp->is_static = 0; + rsp->reason = RSP_REASON_INTERNAL_ERROR; snprintf(errnumbuf, sizeof(errnumbuf), "%d", error_to_report); @@ -1985,7 +1993,7 @@ struct http_response *finish_http_response(const struct client_state *csp, struc rsp->content_length = 0; } - if ((rsp->status != NULL) && strncmpic(rsp->status, "302", 3)) + if (strncmpic(rsp->status, "302", 3)) { /* * If it's not a redirect without any content, @@ -2046,7 +2054,7 @@ struct http_response *finish_http_response(const struct client_state *csp, struc * is older than Privoxy's error message, the server would send status code * 304 and the browser would display the outdated error message again and again. * - * For documents delivered with status code 404 or 503 we set "Last-Modified" + * For documents delivered with status code 403, 404 and 503 we set "Last-Modified" * to Tim Berners-Lee's birthday, which predates the age of any page on the web * and can be safely used to "revalidate" without getting a status code 304. * @@ -2057,7 +2065,9 @@ struct http_response *finish_http_response(const struct client_state *csp, struc get_http_time(0, buf); if (!err) err = enlist_unique_header(rsp->headers, "Date", buf); - if (!strncmpic(rsp->status, "404", 3) || !strncmpic(rsp->status, "503", 3)) + if (!strncmpic(rsp->status, "403", 3) + || !strncmpic(rsp->status, "404", 3) + || !strncmpic(rsp->status, "503", 3)) { if (!err) err = enlist_unique_header(rsp->headers, "Last-Modified", "Wed, 08 Jun 1955 12:00:00 GMT"); } @@ -2731,6 +2741,10 @@ char *make_menu(const char *self, const unsigned feature_flags) { char *html_encoded_prefix; + /* + * Line breaks would be great, but break + * the "blocked" template's JavaScript. + */ string_append(&result, "
  • name); string_append(&result, "\">"); string_append(&result, d->description); - string_append(&result, "
  • \n"); + string_append(&result, ""); } }