diff --git a/socket/tcp-bsd.c b/socket/tcp-bsd.c index bcc87be4f04e5a7bad3536e0128bfbe743a588ed..681f1b7c2f2a3fdea83413100bf45b0b0cbfeaeb 100644 --- a/socket/tcp-bsd.c +++ b/socket/tcp-bsd.c @@ -101,14 +101,20 @@ nice_tcp_bsd_socket_new (NiceAgent *agent, GMainContext *ctx, NiceAddress *addr) nice_address_copy_to_sockaddr(addr, (struct sockaddr *)&name); - if ((sockfd == -1) && - ((name.ss_family == AF_UNSPEC) || - (name.ss_family == AF_INET))) { - sockfd = socket (PF_INET, SOCK_STREAM, 0); - name.ss_family = AF_INET; + if (sockfd == -1) { + if (name.ss_family == AF_UNSPEC || name.ss_family == AF_INET) { + sockfd = socket (PF_INET, SOCK_STREAM, 0); + name.ss_family = AF_INET; +#ifdef HAVE_SA_LEN + name.ss_len = sizeof (struct sockaddr_in); +#endif + } else if (name.ss_family == AF_INET6) { + sockfd = socket (PF_INET6, SOCK_STREAM, 0); + name.ss_family = AF_INET6; #ifdef HAVE_SA_LEN - name.ss_len = sizeof (struct sockaddr_in); + name.ss_len = sizeof (struct sockaddr_in6); #endif + } } if (sockfd == -1) {