summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/lib/util_sock.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/source3/lib/util_sock.c b/source3/lib/util_sock.c
index d7bef0697e..e3673f011a 100644
--- a/source3/lib/util_sock.c
+++ b/source3/lib/util_sock.c
@@ -1158,6 +1158,7 @@ static int socketpair_tcp(int fd[2])
{
int listener;
struct sockaddr sock;
+ struct sockaddr_in sock2;
socklen_t socklen = sizeof(sock);
int connect_done = 0;
@@ -1167,6 +1168,14 @@ static int socketpair_tcp(int fd[2])
if ((listener = socket(PF_INET, SOCK_STREAM, 0)) == -1) goto failed;
+ memset(&sock2, 0, sizeof(sock2));
+#ifdef HAVE_SOCK_SIN_LEN
+ sock2.sin_len = sizeof(sock2);
+#endif
+ sock2.sin_family = PF_INET;
+
+ bind(listener, (struct sockaddr *)&sock2, sizeof(sock2));
+
if (listen(listener, 1) != 0) goto failed;
if (getsockname(listener, &sock, &socklen) != 0) goto failed;