X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;f=jbsockets.c;h=b234b2059a13e1f2c1f2e699d240325e26f27de4;hb=a8090f7cdc5b7f25b38c3972ce8a02645f33e59c;hp=ebfea1b50b042c5879d0fe85b8163941fce7f5ff;hpb=7c45b3dd56086095c9360983de4fde7c7e308a2b;p=privoxy.git diff --git a/jbsockets.c b/jbsockets.c index ebfea1b5..b234b205 100644 --- a/jbsockets.c +++ b/jbsockets.c @@ -1,4 +1,4 @@ -const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.69 2009/12/15 17:41:36 fabiankeil Exp $"; +const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.72 2010/02/15 15:14:10 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/jbsockets.c,v $ @@ -176,6 +176,8 @@ jb_socket connect_to(const char *host, int portnum, struct client_state *csp) { log_error(LOG_LEVEL_INFO, "Can not resolve %s: %s", host, gai_strerror(retval)); + /* XXX: Should find a better way to propagate this error. */ + errno = EINVAL; csp->http->host_ip_addr_str = strdup("unknown"); return(JB_INVALID_SOCKET); } @@ -1042,6 +1044,12 @@ int accept_connection(struct client_state * csp, jb_socket fd) #else do { +#if defined(FEATURE_ACCEPT_FILTER) && defined(SO_ACCEPTFILTER) + struct accept_filter_arg af_options; + bzero(&af_options, sizeof(af_options)); + strlcpy(af_options.af_name, "httpready", sizeof(af_options.af_name)); + setsockopt(fd, SOL_SOCKET, SO_ACCEPTFILTER, &af_options, sizeof(af_options)); +#endif afd = accept (fd, (struct sockaddr *) &client, &c_length); } while (afd < 1 && errno == EINTR); if (afd < 0) @@ -1201,9 +1209,9 @@ unsigned long resolve_hostname_to_ip(const char *host) #ifdef FEATURE_CONNECTION_KEEP_ALIVE /********************************************************************* * - * Function : socket_is_still_usable + * Function : socket_is_still_alive * - * Description : Decides whether or not an open socket is still usable. + * Description : Figures out whether or not a socket is still alive. * * Parameters : * 1 : sfd = The socket to check. @@ -1211,7 +1219,7 @@ unsigned long resolve_hostname_to_ip(const char *host) * Returns : TRUE for yes, otherwise FALSE. * *********************************************************************/ -int socket_is_still_usable(jb_socket sfd) +int socket_is_still_alive(jb_socket sfd) { char buf[10]; int no_data_waiting;