From c56969c51c472fbed5f3fcabeb55735c601f2513 Mon Sep 17 00:00:00 2001 From: Tanguy Pruvot Date: Thu, 15 Mar 2018 15:44:23 +0100 Subject: [PATCH] stratum: socket recv timeout config With a default value set to 10mn, better than unlimited (0) --- stratum/socket.cpp | 7 ++++++- stratum/stratum.cpp | 2 ++ stratum/stratum.h | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/stratum/socket.cpp b/stratum/socket.cpp index 300e4d5..a9796fc 100644 --- a/stratum/socket.cpp +++ b/stratum/socket.cpp @@ -50,16 +50,21 @@ void socket_real_ip(YAAMP_SOCKET *s) YAAMP_SOCKET *socket_initialize(int sock) { + struct timeval timeout; + timeout.tv_sec = g_socket_recv_timeout; + timeout.tv_usec = 0; YAAMP_SOCKET *s = new YAAMP_SOCKET; memset(s, 0, sizeof(YAAMP_SOCKET)); s->buflen = 0; s->sock = sock; + setsockopt(s->sock, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout)); + // yaamp_create_mutex(&s->mutex); // pthread_mutex_lock(&s->mutex); - int res = 0; if (!g_handle_haproxy_ips) { + int res = 0; struct sockaddr_in name; socklen_t len = sizeof(name); memset(&name, 0, len); diff --git a/stratum/stratum.cpp b/stratum/stratum.cpp index b1f032d..382a165 100644 --- a/stratum/stratum.cpp +++ b/stratum/stratum.cpp @@ -40,6 +40,7 @@ bool g_stratum_segwit = false; int g_limit_txs_per_block = 0; bool g_handle_haproxy_ips = false; +int g_socket_recv_timeout = 600; bool g_debuglog_client; bool g_debuglog_hash; @@ -248,6 +249,7 @@ int main(int argc, char **argv) g_stratum_reconnect = iniparser_getint(ini, "STRATUM:reconnect", true); g_stratum_renting = iniparser_getint(ini, "STRATUM:renting", true); g_handle_haproxy_ips = iniparser_getint(ini, "STRATUM:haproxy_ips", g_handle_haproxy_ips); + g_socket_recv_timeout = iniparser_getint(ini, "STRATUM:recv_timeout", 600); g_max_shares = iniparser_getint(ini, "STRATUM:max_shares", g_max_shares); g_limit_txs_per_block = iniparser_getint(ini, "STRATUM:max_txs_per_block", 0); diff --git a/stratum/stratum.h b/stratum/stratum.h index efd9204..cb9f9dd 100644 --- a/stratum/stratum.h +++ b/stratum/stratum.h @@ -91,6 +91,7 @@ extern bool g_stratum_segwit; extern int g_limit_txs_per_block; extern bool g_handle_haproxy_ips; +extern int g_socket_recv_timeout; extern bool g_debuglog_client; extern bool g_debuglog_hash;