-const char jcc_rcs[] = "$Id: jcc.c,v 1.98 2006/08/24 11:01:34 fabiankeil Exp $";
+const char jcc_rcs[] = "$Id: jcc.c,v 1.101 2006/09/06 09:23:37 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/jcc.c,v $
*
* Revisions :
* $Log: jcc.c,v $
+ * Revision 1.101 2006/09/06 09:23:37 fabiankeil
+ * Make number of retries in case of forwarded-connect problems
+ * a config file option (forwarded-connect-retries) and use 0 as
+ * default.
+ *
+ * Revision 1.100 2006/09/03 19:42:59 fabiankeil
+ * Set random(3) seed.
+ *
+ * Revision 1.99 2006/09/02 15:36:42 fabiankeil
+ * Follow the OpenBSD port's lead and protect the resolve
+ * functions on OpenBSD as well.
+ *
* Revision 1.98 2006/08/24 11:01:34 fabiankeil
* --user fix. Only use the user as group if no group is specified.
* Solves BR 1492612. Thanks to Spinor S. and David Laight.
int server_body;
int ms_iis5_hack = 0;
int byte_count = 0;
- unsigned int socks_retries = 0;
+ unsigned int forwarded_connect_retries = 0;
+ unsigned int max_forwarded_connect_retries = csp->config->forwarded_connect_retries;
const struct forward_spec * fwd;
struct http_request *http;
int len; /* for buffer sizes */
return;
}
+ if (!strncmpic(http->cmd, "GET ftp://", 10))
+ {
+ strcpy(buf, FTP_RESPONSE);
+ write_socket(csp->cfd, buf, strlen(buf));
+
+ log_error(LOG_LEVEL_ERROR, "%s tried to use Privoxy as FTP proxy: %s",
+ csp->ip_addr_str, http->cmd);
+
+ free_http_request(http);
+ return;
+ }
+
/* decide how to route the HTTP request */
if ((fwd = forward_url(http, csp)) == NULL)
/* here we connect to the server, gateway, or the forwarder */
while ( (csp->sfd = forwarded_connect(fwd, http, csp))
- && (errno == EINVAL) && (socks_retries++ < 3))
+ && (errno == EINVAL) && (forwarded_connect_retries++ < max_forwarded_connect_retries))
{
log_error(LOG_LEVEL_ERROR, "failed request #%u to connect to %s. Trying again.",
- socks_retries, http->hostport);
+ forwarded_connect_retries, http->hostport);
}
if (csp->sfd == JB_INVALID_SOCKET)
#endif
{
int argc_pos = 0;
+#ifdef HAVE_RANDOM
+ unsigned int random_seed;
+#endif /* ifdef HAVE_RANDOM */
#ifdef unix
struct passwd *pw = NULL;
struct group *grp = NULL;
pthread_mutex_init(&log_init_mutex,0);
#endif /* FEATURE_PTHREAD */
+#ifdef HAVE_RANDOM
+ random_seed = (unsigned int)time(NULL);
+ srandom(random_seed);
+#endif /* ifdef HAVE_RANDOM */
+
/*
* Unix signal handling
*