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;
 			}
openSUSE Build Service is sponsored by