A couple of small bugfixes.
authorfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Sat, 22 Oct 2005 01:59:38 +0000 (01:59 +0000)
committerfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Sat, 22 Oct 2005 01:59:38 +0000 (01:59 +0000)
git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@400 959494ce-11ee-0310-bf91-de5d638817bd

daemon/fnet-dc.c

index 1bd9011..d6ccb77 100644 (file)
@@ -2053,8 +2053,9 @@ static void handletthl(struct dcpeer *peer)
     {
        pushtigertree(&peer->tth, peer->inbuf);
        memmove(peer->inbuf, peer->inbuf + 24, peer->inbufdata -= 24);
+       peer->curread += 24;
     }
-    if((peer->curread += 24) >= peer->totalsize)
+    if(peer->curread >= peer->totalsize)
     {
        peer->state = PEER_CMD;
        synctigertree(&peer->tth);
@@ -2112,6 +2113,12 @@ static void cmd_adcsnd(struct socket *sk, struct dcpeer *peer, char *cmd, char *
            goto out;
        }
        startdl(peer);
+       if(peer->inbufdata > 0)
+       {
+           sockpushdata(sk, peer->inbuf, peer->inbufdata);
+           peer->inbufdata = 0;
+           transread(sk, peer);
+       }
     } else {
        /* We certainly didn't request this...*/
        freedcpeer(peer);