X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=daemon%2Ftransfer.c;h=177353cae655a1881ccddede583e96b7c76fc3c5;hb=f63305cce846ed60e079397fa9fc06a35d5ce365;hp=893953dfe801183dbf65f4fc0979204408d5a181;hpb=5760093c6a76eee741d70f8b8d71e9e52bd655ee;p=doldaconnect.git diff --git a/daemon/transfer.c b/daemon/transfer.c index 893953d..177353c 100644 --- a/daemon/transfer.c +++ b/daemon/transfer.c @@ -181,15 +181,19 @@ static void localerr(struct socket *sk, int errno, struct transfer *transfer) static void dataerr(struct socket *sk, int errno, struct transfer *transfer) { - if(transfer->curpos >= transfer->size) { - transfersetstate(transfer, TRNS_DONE); - if(transfer->localend != NULL) { - closesock(transfer->localend); - quitsock(transfer->localend); - transfer->localend = NULL; + if(transfer->dir == TRNSD_DOWN) { + if(transfer->curpos >= transfer->size) { + transfersetstate(transfer, TRNS_DONE); + if(transfer->localend != NULL) { + closesock(transfer->localend); + quitsock(transfer->localend); + transfer->localend = NULL; + } + } else { + resettransfer(transfer); } - } else { - resettransfer(transfer); + } else if(transfer->dir == TRNSD_UP) { + transfer->close = 1; } }