From 09c0ec3bdf113dd507135237603bf0096e642172 Mon Sep 17 00:00:00 2001 From: Test_User Date: Wed, 24 Jul 2024 02:48:49 -0400 Subject: Probable outgoing IPv6 support --- networks/gnutls.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'networks/gnutls.c') diff --git a/networks/gnutls.c b/networks/gnutls.c index dfa9e88..d84ae05 100644 --- a/networks/gnutls.c +++ b/networks/gnutls.c @@ -210,10 +210,12 @@ int gnutls_connect(void **handle, struct string address, struct string port, str mutex_init(&(gnutls_handle->mutex)); struct sockaddr sockaddr; - if (resolve(address, port, &sockaddr) != 0) + socklen_t sockaddr_len; + int family; + if (resolve(address, port, &sockaddr, &sockaddr_len, &family) != 0) goto gnutls_connect_destroy_mutex; - int fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + int fd = socket(family, SOCK_STREAM, IPPROTO_TCP); if (fd == -1) goto gnutls_connect_destroy_mutex; @@ -222,7 +224,7 @@ int gnutls_connect(void **handle, struct string address, struct string port, str int res; do { - res = connect(fd, &sockaddr, sizeof(sockaddr)); + res = connect(fd, &sockaddr, sockaddr_len); } while (res < 0 && errno == EINTR); if (res < 0) goto gnutls_connect_close; @@ -287,12 +289,12 @@ int gnutls_connect(void **handle, struct string address, struct string port, str goto gnutls_connect_deinit_session; } while (1); - addr_out->data = malloc(sizeof(sockaddr)); + addr_out->data = malloc(sockaddr_len); if (!addr_out->data) goto gnutls_connect_deinit_session; - memcpy(addr_out->data, &sockaddr, sizeof(sockaddr)); - addr_out->len = sizeof(sockaddr); + memcpy(addr_out->data, &sockaddr, sockaddr_len); + addr_out->len = sockaddr_len; return fd; -- cgit v1.2.3