diff options
author | 2019-05-27 15:06:54 +0300 | |
---|---|---|
committer | 2019-05-27 15:06:54 +0300 | |
commit | ca13d9553aac09ca1205b29613c2035ebc0bf3e2 (patch) | |
tree | de29372977826ffdc8b17d0d1c8030138c500dc2 | |
parent | 1fffc262c572e8ba4b962af329fb0d821d95b883 (diff) | |
download | usurpation-ca13d9553aac09ca1205b29613c2035ebc0bf3e2.tar.gz usurpation-ca13d9553aac09ca1205b29613c2035ebc0bf3e2.tar.bz2 usurpation-ca13d9553aac09ca1205b29613c2035ebc0bf3e2.zip |
daemon: improve purple code for better cleanup.
Signed-off-by: Gediminas Jakutis <gediminas@varciai.lt>
-rw-r--r-- | src/daemon/purple.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/daemon/purple.c b/src/daemon/purple.c index 882ea61..138b30b 100644 --- a/src/daemon/purple.c +++ b/src/daemon/purple.c @@ -156,9 +156,11 @@ static void *purple_spawn(void *disregard) char *user = NULL; char *password = NULL; char *proto = NULL; + int cancelstate; (void) disregard; + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cancelstate); pthread_cleanup_push(pthread_mutex_unlock_thunk, &state.mutex); progname = setting_progname(); @@ -203,8 +205,11 @@ static void *purple_spawn(void *disregard) pthread_cleanup_push(purple_account_destroy_thunk, state.account); - g_main_loop_run(loop); pthread_cleanup_push(g_main_loop_quit_thunk, loop); + pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &cancelstate); + pthread_testcancel(); + + g_main_loop_run(loop); pthread_cleanup_pop(1); pthread_cleanup_pop(1); |