| t9pserve: fix a new race involving assert(c->nmsg == 0). - plan9port - [fork] P… | |
| git clone git://src.adamsgaard.dk/plan9port | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit 4a6f0510731b99025c51ce4dc35eee08f697f91a | |
| parent ebda53e16b473c6ad8df070edd6f58e2e1e10994 | |
| Author: Russ Cox <[email protected]> | |
| 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(-) | |
| --- | |
| 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){ |