libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

commit b79c6bca0d047d717378290e675fa9f45d4694e6
parent 49e615382417d830300fccb051345d9140a6315d
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date:   Mon, 18 Apr 2016 21:25:56 +0000

Added more comments about data races.

Diffstat:
Msrc/microhttpd/daemon.c | 8++++++++
1 file changed, 8 insertions(+), 0 deletions(-)

diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c @@ -1824,6 +1824,14 @@ resume_suspended_connections (struct MHD_Daemon *daemon) if (MHD_NO != daemon->resuming) next = daemon->suspended_connections_head; + /* Clear the flag *only* if connections will be resumed otherwise + it may accidentally clear flag that was set at the same time in + other thread (just after 'if (MHD_NO != daemon->resuming)' in + this thread). + Clear flag *before* resuming connections otherwise new connection can + be set to "resuming" in other thread, but missed resuming in this + function at this time so clearing flag at end will clear it without + actually resuming of new connection. */ if (NULL != next) daemon->resuming = MHD_NO; while (NULL != (pos = next))