+ if (sp->ai)
+ freeaddrinfo(sp->ai);
+ sp->ai = tcpip_getaddrinfo(str, port);
+ if (sp->ai && h->state == CS_ST_UNBND)
+ {
+ int s;
+ struct addrinfo *ai = sp->ai;
+ s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
+ if (s < 0)
+ return 0;
+ h->iofile = s;
+
+ if (!tcpip_set_blocking(h, h->blocking))
+ return 0;
+ }
+ return sp->ai;