When calling getaddrinfo() for a listening socket, pass in a suggested type
[sgt/putty] / unix / uxnet.c
index b7c20cf..357fc86 100644 (file)
@@ -705,7 +705,7 @@ Socket sk_newlistener(char *srcaddr, int port, Plug plug, int local_host_only, i
 #ifndef NO_IPV6
         hints.ai_flags = AI_NUMERICHOST;
         hints.ai_family = address_family;
-        hints.ai_socktype = 0;
+        hints.ai_socktype = SOCK_STREAM;
         hints.ai_protocol = 0;
         hints.ai_addrlen = 0;
         hints.ai_addr = NULL;
@@ -713,8 +713,10 @@ Socket sk_newlistener(char *srcaddr, int port, Plug plug, int local_host_only, i
         hints.ai_next = NULL;
         sprintf(portstr, "%d", port);
         retcode = getaddrinfo(srcaddr, portstr, &hints, &ai);
-        addr = ai->ai_addr;
-        addrlen = ai->ai_addrlen;
+       if (retcode == 0) {
+           addr = ai->ai_addr;
+           addrlen = ai->ai_addrlen;
+       }
 #else
         memset(&a,'\0',sizeof(struct sockaddr_in));
         a.sin_family = AF_INET;