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
2006-02-14 19:38:04 +00:00
2005-07-18 22:52:05 +00:00
2007-03-25 17:16:52 +00:00
2005-09-13 01:24:50 +00:00
2006-03-20 02:46:03 +00:00
2007-05-28 20:27:25 +00:00
2007-02-22 06:18:07 +00:00
2005-02-13 22:09:54 +00:00
2006-09-17 20:52:18 +00:00
2006-06-30 16:03:06 +00:00
2007-06-21 02:11:21 +00:00
2006-02-14 19:37:32 +00:00
2004-04-21 23:43:46 +00:00
2006-11-06 04:25:03 +00:00
2005-01-13 04:56:07 +00:00
2005-01-27 19:28:22 +00:00
2006-05-06 22:51:12 +00:00
2006-03-19 06:01:34 +00:00
2005-09-13 00:42:27 +00:00
2005-07-13 13:24:47 +00:00
2007-06-24 22:55:43 -04:00
2005-11-25 13:18:11 +00:00
2006-07-24 19:05:01 +00:00
2005-12-30 19:22:07 +00:00
2006-03-20 02:25:59 +00:00
2005-11-25 13:18:11 +00:00
2005-08-10 16:59:19 +00:00
2005-11-28 16:36:57 +00:00
2005-08-31 04:00:14 +00:00

This is a port of many Plan 9 libraries and programs to Unix.

* Installation

To install, run ./INSTALL.  It builds mk and then uses mk to
run the rest of the installation.  

For more details, see install(1), at install.txt in this directory
and at http://swtch.com/plan9port/man/man1/install.html.

* Documentation

See http://swtch.com/plan9port/man/ for more documentation.
(Documentation is also in this tree, but you need to run
a successful install first.  After that, "9 man 1 intro".)

Intro(1) contains a list of man pages that describe new features
or differences from Plan 9.

* Helping out

If you'd like to help out, great!  The TODO file contains a small list.

If you port this code to other architectures, please share your changes
so others can benefit.

Please use diff -u or CVS (see below) to prepare patches.

* CVS

You can use CVS to keep your local copy up-to-date as we make 
changes and fix bugs.  See the cvs(1) man page here ("9 man cvs")
for details on using cvs.

* Contact

Russ Cox <rsc@swtch.com>
Languages
C 91.6%
Roff 1.4%
C++ 1.3%
Yacc 1.2%
Shell 1.2%
Other 3%