git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@492
959494ce-11ee-0310-bf91-
de5d638817bd
int extended;
int direction; /* Using the constants from transfer.h */
int compress;
int extended;
int direction; /* Using the constants from transfer.h */
int compress;
+ int hascurpos, fetchingtthl, notthl;
struct tigertreehash tth;
void *cprsdata;
char *key;
struct tigertreehash tth;
void *cprsdata;
char *key;
sendadc(peer->sk, "0");
sendadc(peer->sk, "-1");
qstr(peer->sk, "|");
sendadc(peer->sk, "0");
sendadc(peer->sk, "-1");
qstr(peer->sk, "|");
+ peer->fetchingtthl = 1;
static void cmd_error(struct socket *sk, struct dcpeer *peer, char *cmd, char *args)
{
static void cmd_error(struct socket *sk, struct dcpeer *peer, char *cmd, char *args)
{
+ if(peer->fetchingtthl)
+ {
+ peer->fetchingtthl = 0;
+ peer->notthl = 1;
+ requestfile(peer);
+ return;
+ }
if((peer->transfer != NULL) && (peer->transfer->dir == TRNSD_DOWN))
{
transferseterror(peer->transfer, TRNSE_NOTFOUND);
if((peer->transfer != NULL) && (peer->transfer->dir == TRNSD_DOWN))
{
transferseterror(peer->transfer, TRNSE_NOTFOUND);
peer->state = PEER_TTHL;
peer->totalsize = numbytes;
peer->curread = 0;
peer->state = PEER_TTHL;
peer->totalsize = numbytes;
peer->curread = 0;
+ peer->fetchingtthl = 0;
inittigertree(&peer->tth);
handletthl(peer);
} else if(!strcmp(argv[0], "file")) {
inittigertree(&peer->tth);
handletthl(peer);
} else if(!strcmp(argv[0], "file")) {