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)
{
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);
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);
return;
}
startdl(peer);
+ if(peer->inbufdata > 0)
+ {
+ sockpushdata(sk, peer->inbuf, peer->inbufdata);
+ peer->inbufdata = 0;
+ transread(sk, 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);