X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=daemon%2Ffnet-dc.c;h=a99b6804d7833c0ecf1cb4c366c0b30c377cbd92;hb=5eee9d66fce5434f02e42b11e98db3f9330a8497;hp=d6ccb77a696d6dfeae6c3bf61303b8040663955d;hpb=e52006fed4c97009766abdd4a1b15ac79c6830e8;p=doldaconnect.git diff --git a/daemon/fnet-dc.c b/daemon/fnet-dc.c index d6ccb77..a99b680 100644 --- a/daemon/fnet-dc.c +++ b/daemon/fnet-dc.c @@ -2146,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); + } } /* @@ -2976,15 +2982,15 @@ static void peerread(struct socket *sk, struct dcpeer *peer) newqcmd(&peer->queue, peer->inbuf); for(cmd = peercmds; cmd->handler != NULL; cmd++) { - if(!memcmp(peer->inbuf, cmd->name, strlen(cmd->name)) && (peer->inbuf[strlen(cmd->name)] == 0)) + if(!memcmp(peer->inbuf, cmd->name, strlen(cmd->name)) && ((peer->inbuf[strlen(cmd->name)] == ' ') || (peer->inbuf[strlen(cmd->name)] == '|'))) break; } + memmove(peer->inbuf, p, peer->inbufdata -= p - peer->inbuf); if(cmd->stop) { peer->state = PEER_STOP; break; } - memmove(peer->inbuf, p, peer->inbufdata -= p - peer->inbuf); } } else if(peer->state == PEER_TTHL) { handletthl(peer);