aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/dict/dict.h
diff options
context:
space:
mode:
authorRuss Cox <rsc@swtch.com>2007-08-22 08:55:08 -0400
committerRuss Cox <rsc@swtch.com>2007-08-22 08:55:08 -0400
commit841d71b5c6be4851572a60c5a9f9dd239ea69e56 (patch)
tree4dedec2558dfccd3b800681ee16367f7fcd8d429 /src/cmd/dict/dict.h
parent1f61c0914d5f42054b075b6dc5296894de2d25ab (diff)
downloadplan9port-841d71b5c6be4851572a60c5a9f9dd239ea69e56.tar.gz
plan9port-841d71b5c6be4851572a60c5a9f9dd239ea69e56.tar.bz2
plan9port-841d71b5c6be4851572a60c5a9f9dd239ea69e56.zip
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.
Diffstat (limited to 'src/cmd/dict/dict.h')
0 files changed, 0 insertions, 0 deletions