X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/635d063da010c2a98ba36c017d47baff92139eac..2285d016cf0103f03e05e53e22025282c104a164:/windows/winnet.c diff --git a/windows/winnet.c b/windows/winnet.c index 1ddfa5c7..8a7580b2 100644 --- a/windows/winnet.c +++ b/windows/winnet.c @@ -353,6 +353,9 @@ SockAddr sk_namelookup(const char *host, char **canonicalname, address_family == ADDRTYPE_IPV6 ? AF_INET6 : #endif AF_UNSPEC); +#ifndef NO_IPV6 + ret->ai = ret->ais = NULL; +#endif ret_family = AF_UNSPEC; *realhost = '\0'; @@ -456,6 +459,10 @@ SockAddr sk_nonamelookup(const char *host) SockAddr ret = snew(struct SockAddr_tag); ret->error = NULL; ret->family = AF_UNSPEC; +#ifndef NO_IPV6 + ret->ai = ret->ais = NULL; +#endif + ret->naddresses = 0; strncpy(ret->hostname, host, lenof(ret->hostname)); ret->hostname[lenof(ret->hostname)-1] = '\0'; return ret; @@ -1509,9 +1516,12 @@ static void sk_tcp_set_frozen(Socket sock, int is_frozen) if (s->frozen == is_frozen) return; s->frozen = is_frozen; - if (!is_frozen && s->frozen_readable) { - char c; - p_recv(s->s, &c, 1, MSG_PEEK); + if (!is_frozen) { + do_select(s->s, 1); + if (s->frozen_readable) { + char c; + p_recv(s->s, &c, 1, MSG_PEEK); + } } s->frozen_readable = 0; }