From bfad8ed44b834b8a7da53db9f137d862cdd81e96 Mon Sep 17 00:00:00 2001 From: Bill Williams Date: Thu, 14 Nov 2019 10:56:47 -0800 Subject: [PATCH] fix deadlock in wait_while_interface_down --- src/connection.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/connection.c b/src/connection.c index cdc245d..a4faef3 100644 --- a/src/connection.c +++ b/src/connection.c @@ -641,18 +641,17 @@ int wait_while_interface_down() close_and_unref_connection (get_global_conn()); set_global_conn(NULL); - pthread_mutex_lock(get_interface_down_mut()); while (!get_interface_down_event ()) { + pthread_mutex_lock(get_interface_down_mut()); rtn = pthread_cond_wait(get_interface_down_con(), get_interface_down_mut()); + pthread_mutex_unlock (get_interface_down_mut()); if (rtn != 0) ParodusError ("Error on pthread_cond_wait (%d) in wait_while_interface_down\n", rtn); if ((rtn != 0) || g_shutdown) { - pthread_mutex_unlock (get_interface_down_mut()); return -1; } } - pthread_mutex_unlock (get_interface_down_mut()); return 0; }