Fix memory leak on failed peer connections.
[doldaconnect.git] / daemon / fnet-dc.c
index 360fe1f..82081a8 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);
@@ -3171,6 +3173,7 @@ static void peerconnect(struct socket *sk, int err, struct fnetnode *fn)
     if(err != 0)
     {
        putfnetnode(fn);
+       putsock(sk);
        return;
     }
     hub = fn->data;