File 0053-vici-signal-waiting-threads-when-removing-a-connection-entry.patch of Package strongswan.31464
commit b0e2187b6b9f0244161b15009479a2d26f6643bf
Author: Tobias Brunner <tobias@strongswan.org>
Date: Fri May 7 10:53:57 2021 +0200
vici: Signal waiting threads when removing a connection entry
If there are threads waiting in find_entry() and one in remove_entry()
and the latter is woken first by a thread calling put_entry(), the
former threads would remain stuck as they get never signaled.
diff --git a/src/libcharon/plugins/vici/vici_socket.c b/src/libcharon/plugins/vici/vici_socket.c
index 36f8dcc78..babbc6d4b 100644
--- a/src/libcharon/plugins/vici/vici_socket.c
+++ b/src/libcharon/plugins/vici/vici_socket.c
@@ -244,6 +244,7 @@ static entry_t* remove_entry(private_vici_socket_t *this, u_int id)
break;
}
this->connections->remove_at(this->connections, enumerator);
+ entry->cond->broadcast(entry->cond);
found = entry;
break;
}