Fixed a segfault bug when a fnetnode connect fails.
[doldaconnect.git] / daemon / filenet.c
index a74f454..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);
     }
 }
 
@@ -459,6 +463,15 @@ void fnetsetstate(struct fnetnode *fn, int newstate)
     CBCHAINDOCB(fn, fnetnode_ac, fn, L"state");
 }
 
+wchar_t *fnfilebasename(wchar_t *path)
+{
+    wchar_t *p;
+    
+    if((p = wcsrchr(path, L'/')) != NULL)
+       return(p + 1);
+    return(path);
+}
+
 struct fnet *findfnet(wchar_t *name)
 {
     struct fnet *fnet;