diff options
author | Uros Majstorovic <majstor@majstor.org> | 2024-05-07 22:18:35 +0200 |
---|---|---|
committer | Uros Majstorovic <majstor@majstor.org> | 2024-05-07 22:18:35 +0200 |
commit | 9b5e1d985643f209f322254615039c09510f74f7 (patch) | |
tree | 15b372bd6115141c10db8a2c10400069ab6b2a8f /ecp/server | |
parent | 98763d1f48434dfb8c5f4556ec3573920204b7d9 (diff) |
close vlink inbound connections on node remove
Diffstat (limited to 'ecp/server')
-rw-r--r-- | ecp/server/vlink.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/ecp/server/vlink.c b/ecp/server/vlink.c index d0c865b..6efb654 100644 --- a/ecp/server/vlink.c +++ b/ecp/server/vlink.c @@ -145,8 +145,15 @@ void vlink_keyx(ECPSocket *sock, int keyx_period) { ecp_conn_unlock(conn); if (is_d) { + ECPConnection *_conn = NULL; + LOG(LOG_DEBUG, "vlink_keyx: disconnect\n"); - // close all inbound connections; + /* close all inbound connections */ + while ((_conn = ecp_sock_search_gc(conn->sock, &conn->remote.key_perma.public))) { + ecp_conn_close(_conn); + ecp_conn_refcount_dec(_conn); + } + pthread_rwlock_wrlock(&vlink_conn_rwlock); ht_remove_conn(vlink_conn, conn); pthread_rwlock_unlock(&vlink_conn_rwlock); |