projects
/
privoxy.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
#94: Add a config directive to let Privoxy prefer either IPv4 (or IPv6) addresses
[privoxy.git]
/
cgi.c
diff --git
a/cgi.c
b/cgi.c
index
0583f88
..
8655366
100644
(file)
--- a/
cgi.c
+++ b/
cgi.c
@@
-1,4
+1,4
@@
-const char cgi_rcs[] = "$Id: cgi.c,v 1.13
0 2011/04/19 13:00:47
fabiankeil Exp $";
+const char cgi_rcs[] = "$Id: cgi.c,v 1.13
6 2011/07/03 17:54:29
fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/cgi.c,v $
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/cgi.c,v $
@@
-271,6
+271,13
@@
const char image_blank_data[] =
const size_t image_pattern_length = sizeof(image_pattern_data) - 1;
const size_t image_blank_length = sizeof(image_blank_data) - 1;
const size_t image_pattern_length = sizeof(image_pattern_data) - 1;
const size_t image_blank_length = sizeof(image_blank_data) - 1;
+#ifdef FEATURE_COMPRESSION
+/*
+ * Minimum length which a buffer has to reach before
+ * we bother to (re-)compress it. Completely arbitrary.
+ */
+const size_t LOWER_LENGTH_LIMIT_FOR_COMPRESSION = 1024U;
+#endif
static struct http_response cgi_error_memory_response[1];
static struct http_response cgi_error_memory_response[1];
@@
-551,7
+558,9
@@
static struct http_response *dispatch_known_cgi(struct client_state * csp,
if (err && (err != JB_ERR_MEMORY))
{
/* Unexpected error! Shouldn't get here */
if (err && (err != JB_ERR_MEMORY))
{
/* Unexpected error! Shouldn't get here */
- log_error(LOG_LEVEL_ERROR, "Unexpected CGI error %d in top-level handler. Please file a bug report!", err);
+ log_error(LOG_LEVEL_ERROR,
+ "Unexpected CGI error %d in top-level handler. "
+ "Please file a bug report!", err);
err = cgi_error_unknown(csp, rsp, err);
}
if (!err)
err = cgi_error_unknown(csp, rsp, err);
}
if (!err)
@@
-1041,17
+1050,17
@@
void cgi_init_error_messages(void)
"Content-Type: text/html\r\n"
"\r\n";
cgi_error_memory_response->body =
"Content-Type: text/html\r\n"
"\r\n";
cgi_error_memory_response->body =
- "<html>\
r\
n"
- "<head>\
r\
n"
- " <title>500 Internal Privoxy Error</title>\
r\
n"
+ "<html>\n"
+ "<head>\n"
+ " <title>500 Internal Privoxy Error</title>\n"
" <link rel=\"shortcut icon\" href=\"" CGI_PREFIX "error-favicon.ico\" type=\"image/x-icon\">"
" <link rel=\"shortcut icon\" href=\"" CGI_PREFIX "error-favicon.ico\" type=\"image/x-icon\">"
- "</head>\
r\
n"
- "<body>\
r\
n"
- "<h1>500 Internal Privoxy Error</h1>\
r\
n"
- "<p>Privoxy <b>ran out of memory</b> while processing your request.</p>\
r\
n"
- "<p>Please contact your proxy administrator, or try again later</p>\
r\
n"
- "</body>\
r\
n"
- "</html>\
r\
n";
+ "</head>\n"
+ "<body>\n"
+ "<h1>500 Internal Privoxy Error</h1>\n"
+ "<p>Privoxy <b>ran out of memory</b> while processing your request.</p>\n"
+ "<p>Please contact your proxy administrator, or try again later</p>\n"
+ "</body>\n"
+ "</html>\n";
cgi_error_memory_response->head_length =
strlen(cgi_error_memory_response->head);
cgi_error_memory_response->head_length =
strlen(cgi_error_memory_response->head);
@@
-1109,18
+1118,18
@@
jb_err cgi_error_no_template(const struct client_state *csp,
static const char status[] =
"500 Internal Privoxy Error";
static const char body_prefix[] =
static const char status[] =
"500 Internal Privoxy Error";
static const char body_prefix[] =
- "<html>\
r\
n"
- "<head>\
r\
n"
- " <title>500 Internal Privoxy Error</title>\
r\
n"
+ "<html>\n"
+ "<head>\n"
+ " <title>500 Internal Privoxy Error</title>\n"
" <link rel=\"shortcut icon\" href=\"" CGI_PREFIX "error-favicon.ico\" type=\"image/x-icon\">"
" <link rel=\"shortcut icon\" href=\"" CGI_PREFIX "error-favicon.ico\" type=\"image/x-icon\">"
- "</head>\
r\
n"
- "<body>\
r\
n"
- "<h1>500 Internal Privoxy Error</h1>\
r\
n"
- "<p>Privoxy encountered an error while processing your request:</p>\
r\
n"
+ "</head>\n"
+ "<body>\n"
+ "<h1>500 Internal Privoxy Error</h1>\n"
+ "<p>Privoxy encountered an error while processing your request:</p>\n"
"<p><b>Could not load template file <code>";
static const char body_suffix[] =
"<p><b>Could not load template file <code>";
static const char body_suffix[] =
- "</code> or one of its included components.</b></p>\
r\
n"
- "<p>Please contact your proxy administrator.</p>\
r\
n"
+ "</code> or one of its included components.</b></p>\n"
+ "<p>Please contact your proxy administrator.</p>\n"
"<p>If you are the proxy administrator, please put the required file(s)"
"in the <code><i>(confdir)</i>/templates</code> directory. The "
"location of the <code><i>(confdir)</i></code> directory "
"<p>If you are the proxy administrator, please put the required file(s)"
"in the <code><i>(confdir)</i>/templates</code> directory. The "
"location of the <code><i>(confdir)</i></code> directory "
@@
-1129,9
+1138,9
@@
jb_err cgi_error_no_template(const struct client_state *csp,
#ifndef _WIN32
", or <code>/etc/privoxy/</code>"
#endif /* ndef _WIN32 */
#ifndef _WIN32
", or <code>/etc/privoxy/</code>"
#endif /* ndef _WIN32 */
- ").</p>\
r\
n"
- "</body>\
r\
n"
- "</html>\
r\
n";
+ ").</p>\n"
+ "</body>\n"
+ "</html>\n";
const size_t body_size = strlen(body_prefix) + strlen(template_name) + strlen(body_suffix) + 1;
assert(csp);
const size_t body_size = strlen(body_prefix) + strlen(template_name) + strlen(body_suffix) + 1;
assert(csp);
@@
-1196,28
+1205,24
@@
jb_err cgi_error_unknown(const struct client_state *csp,
static const char status[] =
"500 Internal Privoxy Error";
static const char body_prefix[] =
static const char status[] =
"500 Internal Privoxy Error";
static const char body_prefix[] =
- "<html>\
r\
n"
- "<head>\
r\
n"
- " <title>500 Internal Privoxy Error</title>\
r\
n"
+ "<html>\n"
+ "<head>\n"
+ " <title>500 Internal Privoxy Error</title>\n"
" <link rel=\"shortcut icon\" href=\"" CGI_PREFIX "error-favicon.ico\" type=\"image/x-icon\">"
" <link rel=\"shortcut icon\" href=\"" CGI_PREFIX "error-favicon.ico\" type=\"image/x-icon\">"
- "</head>\
r\
n"
- "<body>\
r\
n"
- "<h1>500 Internal Privoxy Error</h1>\
r\
n"
- "<p>Privoxy encountered an error while processing your request:</p>\
r\
n"
+ "</head>\n"
+ "<body>\n"
+ "<h1>500 Internal Privoxy Error</h1>\n"
+ "<p>Privoxy encountered an error while processing your request:</p>\n"
"<p><b>Unexpected internal error: ";
static const char body_suffix[] =
"<p><b>Unexpected internal error: ";
static const char body_suffix[] =
- "</b></p>\
r\
n"
+ "</b></p>\n"
"<p>Please "
"<a href=\"http://sourceforge.net/tracker/?group_id=11118&atid=111118\">"
"<p>Please "
"<a href=\"http://sourceforge.net/tracker/?group_id=11118&atid=111118\">"
- "file a bug report</a>.</p>\r\n"
- "</body>\r\n"
- "</html>\r\n";
- char errnumbuf[30];
- /*
- * Due to sizeof(errnumbuf), body_size will be slightly
- * bigger than necessary but it doesn't really matter.
- */
- const size_t body_size = strlen(body_prefix) + sizeof(errnumbuf) + strlen(body_suffix) + 1;
+ "file a bug report</a>.</p>\n"
+ "</body>\n"
+ "</html>\n";
+ /* Includes room for larger error numbers in the future. */
+ const size_t body_size = sizeof(body_prefix) + sizeof(body_suffix) + 5;
assert(csp);
assert(rsp);
assert(csp);
assert(rsp);
@@
-1230,16
+1235,13
@@
jb_err cgi_error_unknown(const struct client_state *csp,
rsp->is_static = 0;
rsp->crunch_reason = INTERNAL_ERROR;
rsp->is_static = 0;
rsp->crunch_reason = INTERNAL_ERROR;
- snprintf(errnumbuf, sizeof(errnumbuf), "%d", error_to_report);
-
rsp->body = malloc(body_size);
if (rsp->body == NULL)
{
return JB_ERR_MEMORY;
}
rsp->body = malloc(body_size);
if (rsp->body == NULL)
{
return JB_ERR_MEMORY;
}
- strlcpy(rsp->body, body_prefix, body_size);
- strlcat(rsp->body, errnumbuf, body_size);
- strlcat(rsp->body, body_suffix, body_size);
+
+ snprintf(rsp->body, body_size, "%s%d%s", body_prefix, error_to_report, body_suffix);
rsp->status = strdup(status);
if (rsp->status == NULL)
rsp->status = strdup(status);
if (rsp->status == NULL)
@@
-1584,7
+1586,7
@@
struct http_response *finish_http_response(const struct client_state *csp, struc
#ifdef FEATURE_COMPRESSION
if (!err && (csp->flags & CSP_FLAG_CLIENT_SUPPORTS_DEFLATE)
#ifdef FEATURE_COMPRESSION
if (!err && (csp->flags & CSP_FLAG_CLIENT_SUPPORTS_DEFLATE)
- && (rsp->content_length > LOWER_LENGTH_LIMIT_FOR_COM
RP
ESSION))
+ && (rsp->content_length > LOWER_LENGTH_LIMIT_FOR_COM
PR
ESSION))
{
char *compressed_content;
{
char *compressed_content;
@@
-1593,8
+1595,8
@@
struct http_response *finish_http_response(const struct client_state *csp, struc
{
freez(rsp->body);
rsp->body = compressed_content;
{
freez(rsp->body);
rsp->body = compressed_content;
+ err = enlist_unique_header(rsp->headers, "Content-Encoding", "deflate");
}
}
- err = enlist_unique_header(rsp->headers, "Content-Encoding", "deflate");
}
#endif
}
#endif