diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2013-05-17 09:38:07 +0800 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2013-05-21 15:29:43 +0800 |
commit | 3461b6ad5cb90f1448360d0eb04dd661ae477610 (patch) | |
tree | befb7c3b0c861df219fec2a889b04b05184aee4d /ui/twin | |
parent | 7911281337857bd0f13e5945f6e70bb4af7388a0 (diff) | |
download | talos-petitboot-3461b6ad5cb90f1448360d0eb04dd661ae477610.tar.gz talos-petitboot-3461b6ad5cb90f1448360d0eb04dd661ae477610.zip |
lib/waiter: Ensure waiters are consistent during waiter_poll
We have a bug at the moment: if the waitset's->waiters array is updated
duing waiter_poll() (eg, a client connection is closed, and the client's
callback performs a waiter_remove()), then we may invoke callbacks for
incorrect waiters.
This change uses a consistent waiters array duing execution of
waiter_poll, so that any pollfds returned from poll() will result in
correct callback invocations.
This assumes that a waiter will only ever remove *itself* from the
waitset; otherwise, we may call a free()ed waiter.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'ui/twin')
0 files changed, 0 insertions, 0 deletions