From 0c66f33c22506838ba9af83f09552c5cbed2cb1c Mon Sep 17 00:00:00 2001 From: Tanguy Pruvot Date: Sun, 3 Jul 2016 10:11:38 +0200 Subject: [PATCH] stratum: extra check on client thread exit --- stratum/client.cpp | 10 ++++------ stratum/job_send.cpp | 9 ++++----- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/stratum/client.cpp b/stratum/client.cpp index 6548a51..9d91b3f 100644 --- a/stratum/client.cpp +++ b/stratum/client.cpp @@ -530,8 +530,11 @@ void *client_thread(void *p) #ifdef CLIENT_DEBUGLOG_ debuglog("client terminate\n"); #endif + if(!client || client->deleted) { + pthread_exit(NULL); + } - if(client->sock->total_read == 0) + else if(client->sock->total_read == 0) clientlog(client, "no data"); if(g_list_client.Find(client)) @@ -552,8 +555,3 @@ void *client_thread(void *p) pthread_exit(NULL); } - - - - - diff --git a/stratum/job_send.cpp b/stratum/job_send.cpp index b4bf6a3..9284966 100644 --- a/stratum/job_send.cpp +++ b/stratum/job_send.cpp @@ -79,8 +79,8 @@ void job_broadcast(YAAMP_JOB *job) int s1 = current_timestamp_dms(); int count = 0; struct timeval timeout; - timeout.tv_sec = 5; - timeout.tv_usec = 0; + timeout.tv_sec = 5; + timeout.tv_usec = 0; YAAMP_JOB_TEMPLATE *templ = job->templ; @@ -101,9 +101,8 @@ void job_broadcast(YAAMP_JOB *job) client_add_job_history(client, job->id); client_adjust_difficulty(client); - - if (setsockopt (client->sock->sock, SOL_SOCKET, SO_SNDTIMEO, (void *)&timeout, sizeof(timeout)) < 0) - debuglog("setsockopt failed\n"); + + setsockopt(client->sock->sock, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(timeout)); if (socket_send_raw(client->sock, buffer, strlen(buffer)) == -1) { int err = errno;