X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=jbsockets.c;h=680d083039f792293442799df8746a47cfff8d15;hp=66078bdf4a8d1f411511d6da2845bd12b9d0eae7;hb=72fbb4b1553b4e1c9bc61b0600d90c95a30977fd;hpb=a3ee8549f25573ab20c3cde9dd52bbb3205cebfc diff --git a/jbsockets.c b/jbsockets.c index 66078bdf..680d0830 100644 --- a/jbsockets.c +++ b/jbsockets.c @@ -1,4 +1,4 @@ -const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.94 2011/03/27 14:02:53 fabiankeil Exp $"; +const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.98 2011/03/27 14:08:35 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/jbsockets.c,v $ @@ -157,7 +157,8 @@ jb_socket connect_to(const char *host, int portnum, struct client_state *csp) #else fd = no_rfc2553_connect_to(host, portnum, csp); #endif - if ((fd != JB_INVALID_SOCKET) || (errno != EINVAL)) + if ((fd != JB_INVALID_SOCKET) || (errno == EINVAL) + || ((csp->fwd->forward_host == NULL) && (csp->fwd->type == SOCKS_NONE))) { break; } @@ -185,7 +186,12 @@ static jb_socket rfc2553_connect_to(const char *host, int portnum, struct client int flags; #endif int connect_failed; - int socket_error; + /* + * XXX: Initializeing it here is only necessary + * because not all situations are properly + * covered yet. + */ + int socket_error = 0; #ifdef FEATURE_ACL struct access_control_addr dst[1]; @@ -227,6 +233,7 @@ static jb_socket rfc2553_connect_to(const char *host, int portnum, struct client csp->http->host_ip_addr_str = malloc(NI_MAXHOST); if (NULL == csp->http->host_ip_addr_str) { + freeaddrinfo(result); log_error(LOG_LEVEL_ERROR, "Out of memory while getting the server IP address."); return JB_INVALID_SOCKET; @@ -327,7 +334,7 @@ static jb_socket rfc2553_connect_to(const char *host, int portnum, struct client memset(&timeout, 0, sizeof(timeout)); timeout.tv_sec = 30; - /* MS Windows uses int, not SOCKET, for the 1st arg of select(). Wierd! */ + /* MS Windows uses int, not SOCKET, for the 1st arg of select(). Weird! */ if ((select((int)fd + 1, NULL, &wfds, NULL, &timeout) > 0) && FD_ISSET(fd, &wfds)) { @@ -495,7 +502,7 @@ static jb_socket no_rfc2553_connect_to(const char *host, int portnum, struct cli tv->tv_sec = 30; tv->tv_usec = 0; - /* MS Windows uses int, not SOCKET, for the 1st arg of select(). Wierd! */ + /* MS Windows uses int, not SOCKET, for the 1st arg of select(). Weird! */ if (select((int)fd + 1, NULL, &wfds, NULL, tv) <= 0) { close_socket(fd); @@ -760,7 +767,7 @@ int bind_port(const char *hostnam, int portnum, jb_socket *pfd) #ifdef AI_ADDRCONFIG hints.ai_flags |= AI_ADDRCONFIG; #endif - hints.ai_protocol = 0; /* Realy any stream protocol or TCP only */ + hints.ai_protocol = 0; /* Really any stream protocol or TCP only */ hints.ai_canonname = NULL; hints.ai_addr = NULL; hints.ai_next = NULL; @@ -1145,7 +1152,7 @@ int accept_connection(struct client_state * csp, jb_socket fd) * Parameters : * 1 : host = hostname to resolve * - * Returns : INADDR_NONE => failure, INADDR_ANY or tcp/ip address if succesful. + * Returns : INADDR_NONE => failure, INADDR_ANY or tcp/ip address if successful. * *********************************************************************/ unsigned long resolve_hostname_to_ip(const char *host)