From a998c2de35500cfbbd81f5dc53ec13a175143ca2 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 31 Dec 2005 03:49:31 +0000 Subject: [PATCH] freeaddrinfo and gai_strerror svn: r1727 --- collects/openssl/mzssl.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/collects/openssl/mzssl.c b/collects/openssl/mzssl.c index 345ef06511..a73e70fb01 100644 --- a/collects/openssl/mzssl.c +++ b/collects/openssl/mzssl.c @@ -33,6 +33,22 @@ # define mz_hstrerror(x) NULL #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 */ /* For getting connection names: */ #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); if (!addr) { sock = INVALID_SOCKET; - errstr = gai_strerror(err); + errstr = mz_gai_strerror(err); err = 0; goto clean_up_and_die; } @@ -1079,7 +1095,7 @@ static Scheme_Object *ssl_connect(int argc, Scheme_Object *argv[]) #endif status = connect(sock, (struct sockaddr *)addr->ai_addr, addr->ai_addrlen); - freeaddrinfo(addr); + mz_freeaddrinfo(addr); /* here's the complicated bit */ if (status) { @@ -1234,7 +1250,7 @@ ssl_listen(int argc, Scheme_Object *argv[]) l->mref = mref; } - freeaddrinfo(tcp_listen_addr); + mz_freeaddrinfo(tcp_listen_addr); return (Scheme_Object *)l; } @@ -1243,9 +1259,9 @@ ssl_listen(int argc, Scheme_Object *argv[]) errid = SOCK_ERRNO(); closesocket(s); - freeaddrinfo(tcp_listen_addr); + mz_freeaddrinfo(tcp_listen_addr); } else { - freeaddrinfo(tcp_listen_addr); + mz_freeaddrinfo(tcp_listen_addr); errid = SOCK_ERRNO(); } } else {