summaryrefslogtreecommitdiffstats
path: root/src/libusbmuxd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libusbmuxd.c')
-rw-r--r--src/libusbmuxd.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/libusbmuxd.c b/src/libusbmuxd.c
index 327746b..2897da6 100644
--- a/src/libusbmuxd.c
+++ b/src/libusbmuxd.c
@@ -806,6 +806,7 @@ USBMUXD_API int usbmuxd_subscribe(usbmuxd_event_cb_t callback, void *user_data)
USBMUXD_API int usbmuxd_unsubscribe()
{
+ int res;
event_cb = NULL;
socket_shutdown(listenfd, SHUT_RDWR);
@@ -815,9 +816,13 @@ USBMUXD_API int usbmuxd_unsubscribe()
WaitForSingleObject(devmon, INFINITE);
}
#else
- if (pthread_kill(devmon, 0) == 0) {
+ res = pthread_kill(devmon, 0);
+ if (res == 0) {
pthread_cancel(devmon);
- pthread_join(devmon, NULL);
+ res = pthread_join(devmon, NULL);
+ }
+ if ((res != 0) && (res != ESRCH)) {
+ return res;
}
#endif