Moved the post-done transfer reset responsibility to transfer.c.
authorFredrik Tolf <fredrik@dolda2000.com>
Sat, 18 Oct 2008 01:32:17 +0000 (03:32 +0200)
committerFredrik Tolf <fredrik@dolda2000.com>
Sat, 18 Oct 2008 01:32:17 +0000 (03:32 +0200)
daemon/fnet-dc.c
daemon/transfer.c

index 807588f..f8b7606 100644 (file)
@@ -2758,10 +2758,6 @@ static void peerdetach(struct dcpeer *peer)
     closesock(peer->trpipe);
     quitsock(peer->trpipe);
     peer->trpipe = NULL;
-    if(peer->transfer->dir == TRNSD_UP)
-       peer->transfer->close = 1;
-    else if(peer->transfer->dir == TRNSD_DOWN)
-       resettransfer(peer->transfer);
     peer->transfer = NULL;
 }
 
@@ -2831,9 +2827,8 @@ static void trpipeerr(struct socket *sk, int errno, struct dcpeer *peer)
     peer->state = PEER_SYNC;
     dctransgotdata(peer->transfer, peer);
     peerdetach(peer);
-    if(peer->state != PEER_CMD) {
+    if(peer->state != PEER_CMD)
        peer->close = 1;
-    }
 }
 
 static struct socket *mktrpipe(struct dcpeer *peer)
index 893953d..32f3e28 100644 (file)
@@ -189,7 +189,10 @@ static void dataerr(struct socket *sk, int errno, struct transfer *transfer)
            transfer->localend = NULL;
        }
     } else {
-       resettransfer(transfer);
+       if(transfer->dir == TRNSD_DOWN)
+           resettransfer(transfer);
+       else if(transfer->dir == TRNSD_UP)
+           transfer->close = 1;
     }
 }