Author: mturk Date: Tue Apr 8 07:52:56 2014 New Revision: 1585657 URL: http://svn.apache.org/r1585657 Log: Use port when calling getaddrinfo and skip bogus addresses
Modified: tomcat/jk/trunk/native/common/jk_connect.c Modified: tomcat/jk/trunk/native/common/jk_connect.c URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_connect.c?rev=1585657&r1=1585656&r2=1585657&view=diff ============================================================================== --- tomcat/jk/trunk/native/common/jk_connect.c (original) +++ tomcat/jk/trunk/native/common/jk_connect.c Tue Apr 8 07:52:56 2014 @@ -430,6 +430,8 @@ int jk_resolve(const char *host, int por */ struct addrinfo hints, *ai_list, *ai = NULL; int error; + char pbuf[12]; + char *pbufptr = NULL; memset(&hints, 0, sizeof(hints)); hints.ai_socktype = SOCK_STREAM; @@ -440,7 +442,11 @@ int jk_resolve(const char *host, int por else #endif hints.ai_family = JK_INET; - error = getaddrinfo(host, NULL, &hints, &ai_list); + if (port > 0) { + snprintf(pbuf, port, sizeof(pbuf)); + pbufptr = pbuf; + } + error = getaddrinfo(host, pbufptr, &hints, &ai_list); #if JK_HAVE_IPV6 /* XXX: * Is the check for EAI_FAMILY/WSAEAFNOSUPPORT correct @@ -461,12 +467,13 @@ int jk_resolve(const char *host, int por ai = ai_list; while (ai) { if (ai->ai_family == AF_INET6) { - family = JK_INET6; - break; - } - else { - ai = ai->ai_next; + /* ignore elements without required address info */ + if((ai->ai_addr != NULL) && (ai->ai_addrlen > 0)) { + family = JK_INET6; + break; + } } + ai = ai->ai_next; } } #endif @@ -474,12 +481,13 @@ int jk_resolve(const char *host, int por ai = ai_list; while (ai) { if (ai->ai_family == AF_INET) { - family = JK_INET; - break; - } - else { - ai = ai->ai_next; + /* ignore elements without required address info */ + if((ai->ai_addr != NULL) && (ai->ai_addrlen > 0)) { + family = JK_INET; + break; + } } + ai = ai->ai_next; } } if (ai == NULL) { --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org