Commit fc36e13d5b8c8d6fcf831c3087a231fa7d5e2af5

Con Kolivas 2011-09-04T00:00:12

Merge branch 'master' into adl_support

diff --git a/main.c b/main.c
index a4da8a2..4774861 100644
--- a/main.c
+++ b/main.c
@@ -3976,6 +3976,7 @@ static void *longpoll_thread(void *userdata)
 	struct pool *pool = current_pool();
 
 	pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
+	pthread_detach(pthread_self());
 
 	curl = curl_easy_init();
 	if (unlikely(!curl)) {
@@ -4068,7 +4069,8 @@ static void stop_longpoll(void)
 	struct thr_info *thr = &thr_info[longpoll_thr_id];
 
 	tq_freeze(thr->q);
-	pthread_cancel(*thr->pth);
+	if (thr->pth)
+		pthread_cancel(*thr->pth);
 	have_longpoll = false;
 }
 
@@ -4079,7 +4081,6 @@ static void start_longpoll(void)
 	tq_thaw(thr->q);		
 	if (unlikely(thr_info_create(thr, NULL, longpoll_thread, thr)))
 		quit(1, "longpoll thread create failed");
-	pthread_detach(*thr->pth);
 	if (opt_debug)
 		applog(LOG_DEBUG, "Pushing ping to longpoll thread");
 	tq_push(thr_info[longpoll_thr_id].q, &ping);