diff options
| -rw-r--r-- | source3/lib/util_sock.c | 20 | 
1 files changed, 13 insertions, 7 deletions
| diff --git a/source3/lib/util_sock.c b/source3/lib/util_sock.c index 69e33f7725..7fcb9c4c96 100644 --- a/source3/lib/util_sock.c +++ b/source3/lib/util_sock.c @@ -820,6 +820,7 @@ int open_udp_socket(const char *host, int port)  {  	struct sockaddr_storage ss;  	int res; +	socklen_t salen;  	if (!interpret_string_addr(&ss, host, 0)) {  		DEBUG(10,("open_udp_socket: can't resolve name %s\n", @@ -842,15 +843,20 @@ int open_udp_socket(const char *host, int port)  			setup_linklocal_scope_id(  				(struct sockaddr *)&ss);  		} -	} +		salen = sizeof(struct sockaddr_in6); +	} else   #endif -        if (ss.ss_family == AF_INET) { -                struct sockaddr_in *psa; -                psa = (struct sockaddr_in *)&ss; -                psa->sin_port = htons(port); -        } +	if (ss.ss_family == AF_INET) { +		struct sockaddr_in *psa; +		psa = (struct sockaddr_in *)&ss; +		psa->sin_port = htons(port); +	    salen = sizeof(struct sockaddr_in); +	} else { +		DEBUG(1, ("unknown socket family %d", ss.ss_family)); +		return -1; +	} -	if (sys_connect(res,(struct sockaddr *)&ss)) { +	if (connect(res, (struct sockaddr *)&ss, salen)) {  		close(res);  		return -1;  	} | 
