Free the peer key.
[doldaconnect.git] / daemon / fnet-dc.c
index a20aa05..33c7b6f 100644 (file)
@@ -590,6 +590,7 @@ static char *getadcid(struct dcpeer *peer)
     char *ret;
     int isfilelist;
     
+    isfilelist = 0;
     if(!wcscmp(peer->transfer->path, L"files.xml") || !wcscmp(peer->transfer->path, L"files.xml.bz2") || !wcscmp(peer->transfer->path, L"MyList.DcLst"))
        isfilelist = 1;
     if(!isfilelist && (peer->transfer->hash != NULL) && isdchash(peer->transfer->hash) && supports(peer, "tthf"))
@@ -1599,6 +1600,7 @@ static void cmd_peerlock(struct socket *sk, struct dcpeer *peer, char *cmd, char
        peer->transfer = transfer;
        qstrf(sk, "$Direction %s %i|", (peer->direction == TRNSD_UP)?"Upload":"Download", rand() % 10000);
        qstrf(sk, "$Key %s|", key);
+       free(key);
     } else {
        if(peer->key != NULL)
            free(peer->key);
@@ -3073,13 +3075,10 @@ static void hubdestroy(struct fnetnode *fn)
     struct qcommand *qcmd;
     
     hub = (struct dchub *)fn->data;
-    if(fn->sk != NULL)
+    if((fn->sk != NULL) && (fn->sk->data == fn))
     {
-       if(fn->sk->data == fn)
-       {
-           fn->sk->data = NULL;
-           putfnetnode(fn);
-       }
+       fn->sk->data = NULL;
+       putfnetnode(fn);
     }
     if(hub == NULL)
        return;