X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=jcc.c;h=56e07d8c39f1622fdbdd3488538ead17307e3806;hp=47943189f70e96e279e450ccd92c2b37823ffecb;hb=2f946641e6706380d376f6946f30ebe239cc94bc;hpb=94ed40a9af70de3f153558ef5aadff9928f5c762 diff --git a/jcc.c b/jcc.c index 47943189..56e07d8c 100644 --- a/jcc.c +++ b/jcc.c @@ -1,4 +1,4 @@ -const char jcc_rcs[] = "$Id: jcc.c,v 1.347 2011/04/26 16:48:56 fabiankeil Exp $"; +const char jcc_rcs[] = "$Id: jcc.c,v 1.352 2011/05/27 11:34:39 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/jcc.c,v $ @@ -1599,8 +1599,8 @@ static void chat(struct client_state *csp) csp->action->string[ACTION_STRING_LIMIT_CONNECT]; assert(NULL != acceptable_connect_ports); log_error(LOG_LEVEL_INFO, "Request from %s marked for blocking. " - "limit-connect{%s} doesn't allow CONNECT requests to port %d.", - csp->ip_addr_str, acceptable_connect_ports, csp->http->port); + "limit-connect{%s} doesn't allow CONNECT requests to %s", + csp->ip_addr_str, acceptable_connect_ports, csp->http->hostport); csp->action->flags |= ACTION_BLOCK; http->ssl = 0; } @@ -2061,6 +2061,19 @@ static void chat(struct client_state *csp) { csp->content_length = (size_t)(csp->iob->eod - csp->iob->cur); } +#ifdef FEATURE_COMPRESSION + else if ((csp->flags & CSP_FLAG_CLIENT_SUPPORTS_DEFLATE) + && (csp->content_length > LOWER_LENGTH_LIMIT_FOR_COMRPESSION)) + { + char *compressed_content = compress_buffer(p, (size_t *)&csp->content_length); + if (compressed_content != NULL) + { + freez(p); + p = compressed_content; + csp->flags |= CSP_FLAG_BUFFERED_CONTENT_DEFLATED; + } + } +#endif if (JB_ERR_OK != update_server_headers(csp)) { @@ -2863,7 +2876,6 @@ int main(int argc, char **argv) #ifdef unix struct passwd *pw = NULL; struct group *grp = NULL; - char *p; int do_chroot = 0; char *pre_chroot_nslookup_to_load_resolver = NULL; #endif @@ -2902,7 +2914,7 @@ int main(int argc, char **argv) pName++; exit( (install_service(pName)) ? 0 : 1 ); } - else if (strncmp(argv[argc_pos], "--uninstall", + 11) == 0) + else if (strncmp(argv[argc_pos], "--uninstall", 11) == 0) { const char *pName = argv[argc_pos] + 11; if (*pName == ':') @@ -2948,21 +2960,39 @@ int main(int argc, char **argv) else if (strcmp(argv[argc_pos], "--user" ) == 0) { + char *user_arg; + char *group_name; + if (++argc_pos == argc) usage(argv[argc_pos]); - if (NULL != (p = strchr(argv[argc_pos], '.'))) + user_arg = strdup(argv[argc_pos]); + if (NULL == user_arg) { - *p++ = '\0'; - if (NULL == (grp = getgrnam(p))) + log_error(LOG_LEVEL_FATAL, + "Out of memory splitting --user argument '%s'.", argv[argc_pos]); + } + group_name = strchr(user_arg, '.'); + if (NULL != group_name) + { + /* Nul-terminate the user name */ + *group_name = '\0'; + + /* Skip the former delimiter to actually reach the group name */ + group_name++; + + grp = getgrnam(group_name); + if (NULL == grp) { - log_error(LOG_LEVEL_FATAL, "Group '%s' not found.", p); + log_error(LOG_LEVEL_FATAL, "Group '%s' not found.", group_name); } } - - if (NULL == (pw = getpwnam(argv[argc_pos]))) + pw = getpwnam(user_arg); + if (NULL == pw) { - log_error(LOG_LEVEL_FATAL, "User '%s' not found.", argv[argc_pos]); + log_error(LOG_LEVEL_FATAL, "User '%s' not found.", user_arg); } + + freez(user_arg); } else if (strcmp(argv[argc_pos], "--pre-chroot-nslookup" ) == 0)