t9pserve: fix a new race involving assert(c->nmsg == 0). - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 4a6f0510731b99025c51ce4dc35eee08f697f91a
 (DIR) parent ebda53e16b473c6ad8df070edd6f58e2e1e10994
 (HTM) Author: Russ Cox <rsc@swtch.com>
       Date:   Wed, 22 Aug 2007 09:14:25 -0400
       
       9pserve: fix a new race involving assert(c->nmsg == 0).
       
       Just like outputthread can have processed the message
       but not yet called msgput, the same is true of the
       connoutthread, so we cannot check c->nmsg until
       after the connoutthread has shut down gracefully.
       
       Diffstat:
         M src/cmd/9pserve.c                   |       6 +++---
       
       1 file changed, 3 insertions(+), 3 deletions(-)
       ---
 (DIR) diff --git a/src/cmd/9pserve.c b/src/cmd/9pserve.c
       t@@ -560,13 +560,13 @@ connthread(void *arg)
                sendq(outq, &sync);
                recvp(c->outqdead);
        
       -        /* should be no messages left anywhere. */
       -        assert(c->nmsg == 0);
       -
                /* everything is quiet; can close the local output queue. */
                sendq(c->outq, nil);
                recvp(c->outqdead);
        
       +        /* should be no messages left anywhere. */
       +        assert(c->nmsg == 0);
       +
                /* clunk all outstanding fids */
                for(i=0; i<NHASH; i++){
                        for(h=c->fid[i]; h; h=hnext){