X-Git-Url: http://git.dolda2000.com/gitweb/?p=doldaconnect.git;a=blobdiff_plain;f=daemon%2Ffnet-dc.c;h=36ddb1451567807147972e1b323a920d8ef6bb26;hp=afd13b3121dd6de85b2909d7693f32ffc04d4d3f;hb=284e199aabf3b1149ec24f1aa16e9bed06ec7e91;hpb=cac2915d81f71d6f778a80c40216e48129b444df diff --git a/daemon/fnet-dc.c b/daemon/fnet-dc.c index afd13b3..36ddb14 100644 --- a/daemon/fnet-dc.c +++ b/daemon/fnet-dc.c @@ -2762,6 +2762,7 @@ static void peerdetach(struct dcpeer *peer) { CBUNREG(peer->transfer, trans_filterout, peer); CBUNREG(peer->transfer, trans_destroy, peer); + peer->trpipe->pnext = NULL; closesock(peer->trpipe); quitsock(peer->trpipe); peer->trpipe = NULL; @@ -2828,6 +2829,7 @@ static void transwrite(struct socket *sk, struct dcpeer *peer) return; } dctransgotdata(peer->transfer, peer); + sockread(peer->trpipe); } static void trpiperead(struct socket *sk, struct dcpeer *peer) @@ -2854,6 +2856,7 @@ static struct socket *mktrpipe(struct dcpeer *peer) struct socket *sk; sk = netsockpipe(); + sk->pnext = peer->sk; sk->data = peer; sk->readcb = (void (*)(struct socket *, void *))trpiperead; sk->writecb = (void (*)(struct socket *, void *))trpipewrite;