Dolda2000 GitWeb
/
doldaconnect.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Updated with hash related strings.
[doldaconnect.git]
/
daemon
/
fnet-dc.c
diff --git
a/daemon/fnet-dc.c
b/daemon/fnet-dc.c
index
1be50d6
..
ec19a56
100644
(file)
--- a/
daemon/fnet-dc.c
+++ b/
daemon/fnet-dc.c
@@
-536,7
+536,9
@@
static char **parseadc(char *args)
} else if(*args == '\\') {
addtobuf(buf, '\\');
}
} else if(*args == '\\') {
addtobuf(buf, '\\');
}
+ args++;
state = 1;
state = 1;
+ break;
}
}
if(buf != NULL)
}
}
if(buf != NULL)
@@
-1473,7
+1475,8
@@
static void cmd_direction(struct socket *sk, struct dcpeer *peer, char *cmd, cha
freedcpeer(peer);
return;
}
freedcpeer(peer);
return;
}
- requestfile(peer);
+ if(peer->direction == TRNSD_DOWN)
+ requestfile(peer);
} else {
if(peer->wcsname == NULL)
{
} else {
if(peer->wcsname == NULL)
{
@@
-2051,8
+2054,9
@@
static void handletthl(struct dcpeer *peer)
{
pushtigertree(&peer->tth, peer->inbuf);
memmove(peer->inbuf, peer->inbuf + 24, peer->inbufdata -= 24);
{
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);
{
peer->state = PEER_CMD;
synctigertree(&peer->tth);
@@
-2110,6
+2114,12
@@
static void cmd_adcsnd(struct socket *sk, struct dcpeer *peer, char *cmd, char *
goto out;
}
startdl(peer);
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);
} else {
/* We certainly didn't request this...*/
freedcpeer(peer);
@@
-2137,6
+2147,12
@@
static void cmd_sending(struct socket *sk, struct dcpeer *peer, char *cmd, char
return;
}
startdl(peer);
return;
}
startdl(peer);
+ if(peer->inbufdata > 0)
+ {
+ sockpushdata(sk, peer->inbuf, peer->inbufdata);
+ peer->inbufdata = 0;
+ transread(sk, peer);
+ }
}
/*
}
/*
@@
-2967,15
+2983,15
@@
static void peerread(struct socket *sk, struct dcpeer *peer)
newqcmd(&peer->queue, peer->inbuf);
for(cmd = peercmds; cmd->handler != NULL; cmd++)
{
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;
}
break;
}
+ memmove(peer->inbuf, p, peer->inbufdata -= p - peer->inbuf);
if(cmd->stop)
{
peer->state = PEER_STOP;
break;
}
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);
}
} else if(peer->state == PEER_TTHL) {
handletthl(peer);