plan9port/src
Russ Cox 841d71b5c6 9pserve: fix races causing assert(c->nmsg == 0) to fail.
1. Could happen that connoutthread sends c->outq a nil
just before the regular input handler sends c->outq a real message.
When the connoutthread gets the nil it will free c->outq,
leaving the real message unprocessed.

2. Could happen that the outputthread writes a message
body to the remote 9P server and then a response comes
in and then the connection gets torn down, all before the
outputthread manages to call msgput(m).
Thanks to David Swasey for identifying this scenario.

Also change yield() loop into explicit communication.

Also remove dead code involving hungup queues.
2007-08-22 08:55:08 -04:00
..
cmd 9pserve: fix races causing assert(c->nmsg == 0) to fail. 2007-08-22 08:55:08 -04:00
lib9 futimes on linux now 2007-05-20 14:38:54 +00:00
lib9p correct ref counting in walkfile (Nemo) 2006-10-12 01:01:02 +00:00
lib9pclient more functions 2006-07-23 02:55:34 +00:00
libacme save old q0, q1 2006-06-25 23:52:41 +00:00
libauth Use gcc -ansi -pedantic in 9c. Fix many non-C89-isms. 2006-04-01 19:24:03 +00:00
libauthsrv Use gcc -ansi -pedantic in 9c. Fix many non-C89-isms. 2006-04-01 19:24:03 +00:00
libbin add portdate 2004-12-26 23:23:57 +00:00
libbio return number of bytes output 2006-07-02 15:24:56 +00:00
libcomplete add portdate 2004-12-26 23:23:57 +00:00
libdisk Use gcc -ansi -pedantic in 9c. Fix many non-C89-isms. 2006-04-01 19:24:03 +00:00
libdiskfs more from dave swasey 2007-06-18 15:24:25 +00:00
libdraw block instead of chewing cpu in eread (Lu Xuxiao) 2006-11-05 14:43:52 +00:00
libflate new 64-bit safe 2006-06-07 23:25:39 +00:00
libframe revert frseltick 2007-05-10 19:30:02 +00:00
libgeometry 3D geometry 2005-01-04 21:23:01 +00:00
libhtml Use gcc -ansi -pedantic in 9c. Fix many non-C89-isms. 2006-04-01 19:24:03 +00:00
libhttpd use fmtlocaleinit 2007-04-21 22:25:45 +00:00
libip Myetheraddr lives in myetheraddr.c, so remove it here. 2006-08-30 00:09:39 +00:00
libmach warning 2006-04-20 21:37:15 +00:00
libmemdraw add stub routines 2006-06-25 19:28:25 +00:00
libmemlayer separate out 2006-06-25 18:58:06 +00:00
libmp darawin 2006-04-21 04:25:28 +00:00
libmux In non-blocking recv functions in libmux and libdraw, 2006-11-04 18:46:00 +00:00
libndb Use gcc -ansi -pedantic in 9c. Fix many non-C89-isms. 2006-04-01 19:24:03 +00:00
libplumb plumbunmount 2006-06-25 23:55:37 +00:00
libregexp another 2007-06-09 04:59:40 +00:00
libsec apple 2006-04-21 03:55:13 +00:00
libString Use gcc -ansi -pedantic in 9c. Fix many non-C89-isms. 2006-04-01 19:24:03 +00:00
libsunrpc fix memory leak (bakul shah) 2007-04-24 06:49:30 +00:00
libthread use standard sun context routines 2007-05-01 10:51:23 +00:00
libventi sync with plan 9 2007-04-21 19:43:09 +00:00
make2mk make -> mk 2003-11-23 18:10:54 +00:00
mk2make make -> mk 2003-11-23 18:10:54 +00:00
mkcommon remove rule - breaks mac 2005-05-02 03:11:29 +00:00
mkdirs add tracing cd prints 2005-11-26 15:39:32 +00:00
mkfile update lucida 2006-03-20 02:25:59 +00:00
mkhdr use install not install -c 2006-02-24 17:46:47 +00:00
mklib works on Linux 2.6 2005-01-14 04:24:09 +00:00
mkmany good bye SHORTLIB 2005-01-04 22:09:40 +00:00
mkmk.sh new 2006-05-26 00:53:20 +00:00
mkone good bye SHORTLIB 2005-01-04 22:09:40 +00:00
mksyslib checkpoint 2005-01-14 03:45:44 +00:00