stratum: socket recv timeout config

With a default value set to 10mn, better than unlimited (0)
This commit is contained in:
Tanguy Pruvot 2018-03-15 15:44:23 +01:00
parent 67d3e6aeed
commit c56969c51c
3 changed files with 9 additions and 1 deletions

View file

@ -50,16 +50,21 @@ void socket_real_ip(YAAMP_SOCKET *s)
YAAMP_SOCKET *socket_initialize(int sock) 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; YAAMP_SOCKET *s = new YAAMP_SOCKET;
memset(s, 0, sizeof(YAAMP_SOCKET)); memset(s, 0, sizeof(YAAMP_SOCKET));
s->buflen = 0; s->buflen = 0;
s->sock = sock; s->sock = sock;
setsockopt(s->sock, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout));
// yaamp_create_mutex(&s->mutex); // yaamp_create_mutex(&s->mutex);
// pthread_mutex_lock(&s->mutex); // pthread_mutex_lock(&s->mutex);
int res = 0;
if (!g_handle_haproxy_ips) { if (!g_handle_haproxy_ips) {
int res = 0;
struct sockaddr_in name; struct sockaddr_in name;
socklen_t len = sizeof(name); socklen_t len = sizeof(name);
memset(&name, 0, len); memset(&name, 0, len);

View file

@ -40,6 +40,7 @@ bool g_stratum_segwit = false;
int g_limit_txs_per_block = 0; int g_limit_txs_per_block = 0;
bool g_handle_haproxy_ips = false; bool g_handle_haproxy_ips = false;
int g_socket_recv_timeout = 600;
bool g_debuglog_client; bool g_debuglog_client;
bool g_debuglog_hash; 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_reconnect = iniparser_getint(ini, "STRATUM:reconnect", true);
g_stratum_renting = iniparser_getint(ini, "STRATUM:renting", 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_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_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); g_limit_txs_per_block = iniparser_getint(ini, "STRATUM:max_txs_per_block", 0);

View file

@ -91,6 +91,7 @@ extern bool g_stratum_segwit;
extern int g_limit_txs_per_block; extern int g_limit_txs_per_block;
extern bool g_handle_haproxy_ips; extern bool g_handle_haproxy_ips;
extern int g_socket_recv_timeout;
extern bool g_debuglog_client; extern bool g_debuglog_client;
extern bool g_debuglog_hash; extern bool g_debuglog_hash;