X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;f=cgi.c;h=a55805b4ee248b91819a1561ddcfe141405919b4;hb=29b9abde2ef3e4db77f20206a6988fd4eef9cc8d;hp=028a798d1ac441bfe693bc8d6bfe7e47d8cd798c;hpb=3947ebff095737086603dadbf9f8443e3accf0e1;p=privoxy.git diff --git a/cgi.c b/cgi.c index 028a798d..a55805b4 100644 --- a/cgi.c +++ b/cgi.c @@ -1,4 +1,4 @@ -const char cgi_rcs[] = "$Id: cgi.c,v 1.137 2011/07/03 17:55:23 fabiankeil Exp $"; +const char cgi_rcs[] = "$Id: cgi.c,v 1.140 2011/07/08 13:28:11 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/cgi.c,v $ @@ -1507,9 +1507,20 @@ static void get_locale_time(char *buf, size_t buffer_size) char *compress_buffer(char *buffer, size_t *buffer_length, int compression_level) { char *compressed_buffer; - size_t new_length = *buffer_length; + size_t new_length; assert(-1 <= compression_level && compression_level <= 9); + /* + * If the compression level is 0 or if the entropy + * is high, the "compressing" data will take more + * room then the uncompressed data due to the zlib + * overhead. + * + * XXX: The overhead isn't constant and 30 bytes + * may not be enough for everybody + */ + new_length = *buffer_length + 30; + compressed_buffer = malloc(new_length); if (NULL == compressed_buffer) { @@ -1520,7 +1531,9 @@ char *compress_buffer(char *buffer, size_t *buffer_length, int compression_level if (Z_OK != compress2((Bytef *)compressed_buffer, &new_length, (Bytef *)buffer, *buffer_length, compression_level)) { - log_error(LOG_LEVEL_ERROR, "Error in compress2()"); + log_error(LOG_LEVEL_ERROR, + "compress2() failed. Buffer size: %d, compression level: %d.", + new_length, compression_level); freez(compressed_buffer); return NULL; } @@ -2130,6 +2143,7 @@ struct map *default_exports(const struct client_state *csp, const char *caller) struct map * exports; int local_help_exists = 0; char *ip_address = NULL; + char *port = NULL; char *hostname = NULL; assert(csp); @@ -2142,12 +2156,12 @@ struct map *default_exports(const struct client_state *csp, const char *caller) if (csp->config->hostname) { - get_host_information(csp->cfd, &ip_address, NULL); + get_host_information(csp->cfd, &ip_address, &port, NULL); hostname = strdup(csp->config->hostname); } else { - get_host_information(csp->cfd, &ip_address, &hostname); + get_host_information(csp->cfd, &ip_address, &port, &hostname); } err = map(exports, "version", 1, html_encode(VERSION), 0); @@ -2155,6 +2169,8 @@ struct map *default_exports(const struct client_state *csp, const char *caller) if (!err) err = map(exports, "time", 1, html_encode(buf), 0); if (!err) err = map(exports, "my-ip-address", 1, html_encode(ip_address ? ip_address : "unknown"), 0); freez(ip_address); + if (!err) err = map(exports, "my-port", 1, html_encode(port ? port : "unkown"), 0); + freez(port); if (!err) err = map(exports, "my-hostname", 1, html_encode(hostname ? hostname : "unknown"), 0); freez(hostname); if (!err) err = map(exports, "homepage", 1, html_encode(HOME_PAGE_URL), 0); @@ -2179,9 +2195,6 @@ struct map *default_exports(const struct client_state *csp, const char *caller) if (!err) err = map_block_killer(exports, "can-toggle"); #endif - snprintf(buf, sizeof(buf), "%d", csp->config->hport); - if (!err) err = map(exports, "my-port", 1, buf, 1); - if(!strcmp(CODE_STATUS, "stable")) { if (!err) err = map_block_killer(exports, "unstable");