socket_wrapper: fix connect() for dgram sockets, if the destination isn't there yet
authorStefan Metzmacher <metze@samba.org>
Fri, 20 Mar 2009 15:27:17 +0000 (16:27 +0100)
committerStefan Metzmacher <metze@samba.org>
Sat, 21 Mar 2009 09:44:40 +0000 (10:44 +0100)
metze

lib/socket_wrapper/socket_wrapper.c

index 44082e78a1e97ca86ac9b1f6cdefe061c66cd8f1..1d35c8d20ca311bc2f4b8cdf71dd40322dcfb229 100644 (file)
@@ -1686,10 +1686,14 @@ _PUBLIC_ int swrap_connect(int s, const struct sockaddr *serv_addr, socklen_t ad
        ret = sockaddr_convert_to_un(si, (const struct sockaddr *)serv_addr, addrlen, &un_addr, 0, NULL);
        if (ret == -1) return -1;
 
-       swrap_dump_packet(si, serv_addr, SWRAP_CONNECT_SEND, NULL, 0);
+       if (si->type == SOCK_DGRAM) {
+               ret = 0;
+       } else {
+               swrap_dump_packet(si, serv_addr, SWRAP_CONNECT_SEND, NULL, 0);
 
-       ret = real_connect(s, (struct sockaddr *)&un_addr, 
-                          sizeof(struct sockaddr_un));
+               ret = real_connect(s, (struct sockaddr *)&un_addr,
+                                  sizeof(struct sockaddr_un));
+       }
 
        /* to give better errors */
        if (ret == -1 && errno == ENOENT) {