X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=daemon%2Ffnet-dc.c;h=811b5e0480822a9b2a324de28db29245c9d5c152;hb=0d8c93cb58054c3998b023e9e5ab53f15f9cb2fc;hp=cf8ee0bd6a590a1bf8dc2b6d39894de54c06985a;hpb=9a2d6cb846112bfa6fb05d70ae5aa5af058076ce;p=doldaconnect.git diff --git a/daemon/fnet-dc.c b/daemon/fnet-dc.c index cf8ee0b..811b5e0 100644 --- a/daemon/fnet-dc.c +++ b/daemon/fnet-dc.c @@ -529,14 +529,16 @@ static char **parseadc(char *args) addtobuf(retbuf, NULL); freeparr(retbuf); return(NULL); - } else if(*args == 's') { + } else if((*args == 's') || (*args == ' ')) { addtobuf(buf, ' '); } else if(*args == 'n') { addtobuf(buf, '\n'); } else if(*args == '\\') { addtobuf(buf, '\\'); } + args++; state = 1; + break; } } if(buf != NULL) @@ -2051,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); @@ -2110,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); @@ -2137,6 +2146,12 @@ static void cmd_sending(struct socket *sk, struct dcpeer *peer, char *cmd, char return; } startdl(peer); + if(peer->inbufdata > 0) + { + sockpushdata(sk, peer->inbuf, peer->inbufdata); + peer->inbufdata = 0; + transread(sk, peer); + } } /*