Enable passing of args to fnetnodes.
[doldaconnect.git] / daemon / fnet-dc.c
index a99b680..ed10928 100644 (file)
@@ -575,8 +575,11 @@ static char *getadcid(struct dcpeer *peer)
 {
     char *buf;
     char *ret;
+    int isfilelist;
     
-    if((peer->transfer->hash != NULL) && isdchash(peer->transfer->hash) && supports(peer, "tthf"))
+    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"))
     {
        buf = base32encode(peer->transfer->hash->buf, 24);
        ret = sprintf2("TTH/%.39s", buf);
@@ -993,7 +996,7 @@ static void cmd_forcemove(struct socket *sk, struct fnetnode *fn, char *cmd, cha
     } else {
        freeargs = 0;
     }
-    if((newfn = fnetinitconnect(L"dc", args)) != NULL)
+    if((newfn = fnetinitconnect(L"dc", args, NULL)) != NULL)
     {
        linkfnetnode(newfn);
        putfnetnode(newfn);
@@ -1475,7 +1478,8 @@ static void cmd_direction(struct socket *sk, struct dcpeer *peer, char *cmd, cha
            freedcpeer(peer);
            return;
        }
-       requestfile(peer);
+       if(peer->direction == TRNSD_DOWN)
+           requestfile(peer);
     } else {
        if(peer->wcsname == NULL)
        {