Fixed a segfault bug when a fnetnode connect fails.
[doldaconnect.git] / daemon / filenet.c
index da83a09..18c74ef 100644 (file)
@@ -176,17 +176,21 @@ static void conncb(struct socket *sk, int err, struct fnetnode *data)
     data->fnet->connect(data, sk);
     data->connected = 1;
     putfnetnode(data);
-    putsock(sk);
 }
 
 static void resolvecb(struct sockaddr *addr, int addrlen, struct fnetnode *data)
 {
-    if(addr == NULL)
+    struct socket *sk;
+    
+    sk = NULL;
+    if(addr != NULL)
+       sk = netcsconn(addr, addrlen, (void (*)(struct socket *, int, void *))conncb, data);
+    if(sk == NULL)
     {
        killfnetnode(data);
        putfnetnode(data);
     } else {
-       netcsconn(addr, addrlen, (void (*)(struct socket *, int, void *))conncb, data);
+       putsock(sk);
     }
 }