mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-21 22:01:31 +02:00
BUG/MEDIUM: threads/server: Fix deadlock in srv_set_stopping/srv_set_admin_flag
Because of a typo (HA_SPIN_LOCK instead of HA_SPIN_UNLOCK), there is a deadlock in srv_set_stopping and srv_set_admin_flag when there is at least one trackers. This patch must be backported in 1.8.
This commit is contained in:
parent
c20d737338
commit
8d01fd6b3c
@ -976,7 +976,7 @@ void srv_set_stopping(struct server *s, const char *reason, struct check *check)
|
||||
for (srv = s->trackers; srv; srv = srv->tracknext) {
|
||||
HA_SPIN_LOCK(SERVER_LOCK, &srv->lock);
|
||||
srv_set_stopping(srv, NULL, NULL);
|
||||
HA_SPIN_LOCK(SERVER_LOCK, &srv->lock);
|
||||
HA_SPIN_UNLOCK(SERVER_LOCK, &srv->lock);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1019,7 +1019,7 @@ void srv_set_admin_flag(struct server *s, enum srv_admin mode, const char *cause
|
||||
for (srv = s->trackers; srv; srv = srv->tracknext) {
|
||||
HA_SPIN_LOCK(SERVER_LOCK, &srv->lock);
|
||||
srv_set_admin_flag(srv, mode, cause);
|
||||
HA_SPIN_LOCK(SERVER_LOCK, &srv->lock);
|
||||
HA_SPIN_UNLOCK(SERVER_LOCK, &srv->lock);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user