1*368c31abSDavid du Colombier #include <u.h> 2*368c31abSDavid du Colombier #ifdef PLAN9PORT 3*368c31abSDavid du Colombier #include <sys/socket.h> 4*368c31abSDavid du Colombier #endif 5*368c31abSDavid du Colombier #include <libc.h> 6*368c31abSDavid du Colombier #include <venti.h> 7*368c31abSDavid du Colombier #include "queue.h" 8*368c31abSDavid du Colombier 9*368c31abSDavid du Colombier void vthangup(VtConn * z)10*368c31abSDavid du Colombiervthangup(VtConn *z) 11*368c31abSDavid du Colombier { 12*368c31abSDavid du Colombier qlock(&z->lk); 13*368c31abSDavid du Colombier z->state = VtStateClosed; 14*368c31abSDavid du Colombier #ifdef PLAN9PORT 15*368c31abSDavid du Colombier /* try to make the read in vtrecvproc fail */ 16*368c31abSDavid du Colombier shutdown(SHUT_WR, z->infd); 17*368c31abSDavid du Colombier shutdown(SHUT_WR, z->outfd); 18*368c31abSDavid du Colombier #endif 19*368c31abSDavid du Colombier if(z->infd >= 0) 20*368c31abSDavid du Colombier close(z->infd); 21*368c31abSDavid du Colombier if(z->outfd >= 0 && z->outfd != z->infd) 22*368c31abSDavid du Colombier close(z->outfd); 23*368c31abSDavid du Colombier z->infd = -1; 24*368c31abSDavid du Colombier z->outfd = -1; 25*368c31abSDavid du Colombier if(z->writeq) 26*368c31abSDavid du Colombier _vtqhangup(z->writeq); 27*368c31abSDavid du Colombier if(z->readq) 28*368c31abSDavid du Colombier _vtqhangup(z->readq); 29*368c31abSDavid du Colombier qunlock(&z->lk); 30*368c31abSDavid du Colombier } 31*368c31abSDavid du Colombier 32