freeaddrinfo and gai_strerror

svn: r1727
This commit is contained in:
Matthew Flatt 2005-12-31 03:49:31 +00:00
parent cfdbbf6a54
commit a998c2de35

View File

@ -33,6 +33,22 @@
# define mz_hstrerror(x) NULL # define mz_hstrerror(x) NULL
#endif #endif
/* stolen from $(PLTHOME}/src/mzscheme/src/network.c */
#ifdef HAVE_GETADDRINFO
# define mz_freeaddrinfo freeaddrinfo
# define mz_gai_strerror gai_strerror
#else
void mz_freeaddrinfo(struct mz_addrinfo *ai)
{
free(ai->ai_addr);
free(ai);
}
const char *mz_gai_strerror(int ecode)
{
return hstrerror(ecode);
}
#endif
/* stolen from $(PLTHOME}/src/mzscheme/src/network.c */ /* stolen from $(PLTHOME}/src/mzscheme/src/network.c */
/* For getting connection names: */ /* For getting connection names: */
#define MZ_SOCK_NAME_MAX_LEN 256 #define MZ_SOCK_NAME_MAX_LEN 256
@ -1061,7 +1077,7 @@ static Scheme_Object *ssl_connect(int argc, Scheme_Object *argv[])
addr = scheme_get_host_address(address, nport, &err, -1, 0, 1); addr = scheme_get_host_address(address, nport, &err, -1, 0, 1);
if (!addr) { if (!addr) {
sock = INVALID_SOCKET; sock = INVALID_SOCKET;
errstr = gai_strerror(err); errstr = mz_gai_strerror(err);
err = 0; err = 0;
goto clean_up_and_die; goto clean_up_and_die;
} }
@ -1079,7 +1095,7 @@ static Scheme_Object *ssl_connect(int argc, Scheme_Object *argv[])
#endif #endif
status = connect(sock, (struct sockaddr *)addr->ai_addr, addr->ai_addrlen); status = connect(sock, (struct sockaddr *)addr->ai_addr, addr->ai_addrlen);
freeaddrinfo(addr); mz_freeaddrinfo(addr);
/* here's the complicated bit */ /* here's the complicated bit */
if (status) { if (status) {
@ -1234,7 +1250,7 @@ ssl_listen(int argc, Scheme_Object *argv[])
l->mref = mref; l->mref = mref;
} }
freeaddrinfo(tcp_listen_addr); mz_freeaddrinfo(tcp_listen_addr);
return (Scheme_Object *)l; return (Scheme_Object *)l;
} }
@ -1243,9 +1259,9 @@ ssl_listen(int argc, Scheme_Object *argv[])
errid = SOCK_ERRNO(); errid = SOCK_ERRNO();
closesocket(s); closesocket(s);
freeaddrinfo(tcp_listen_addr); mz_freeaddrinfo(tcp_listen_addr);
} else { } else {
freeaddrinfo(tcp_listen_addr); mz_freeaddrinfo(tcp_listen_addr);
errid = SOCK_ERRNO(); errid = SOCK_ERRNO();
} }
} else { } else {