summaryrefslogtreecommitdiffstats
path: root/xmrstak/net/jpsock.cpp
diff options
context:
space:
mode:
authorfireice-uk <fireice-uk@users.noreply.github.com>2017-11-09 22:43:08 +0000
committerpsychocrypt <psychocrypt@users.noreply.github.com>2017-11-09 23:43:08 +0100
commitd35893d926c74893d7c85d1b87b24ffa55744649 (patch)
treeb2c1186e3ad96696592e1572e553514af04048b4 /xmrstak/net/jpsock.cpp
parentb3237bab587f937e90a2ff0d06aba5e3630a8047 (diff)
downloadxmr-stak-d35893d926c74893d7c85d1b87b24ffa55744649.zip
xmr-stak-d35893d926c74893d7c85d1b87b24ffa55744649.tar.gz
Multi-pool final version (#90)
* Multi-pool first draft * Fix wspace from new IDE * Better TLS error message * Fix TLS bug * Don't put dev pool on stats + pool change-back * bug fixes * Error message work * fix win build * add per-pool nicehash setting * Fix bugs * rm debug msg * Multipool guided setup * Support TLS and Nicehash in config * prelim jconf changes * final multipool changes * increase default retry_time to 30, fix mac erro * rm debug dev pool settings * Fix another source of connect runaway
Diffstat (limited to 'xmrstak/net/jpsock.cpp')
-rw-r--r--xmrstak/net/jpsock.cpp31
1 files changed, 22 insertions, 9 deletions
diff --git a/xmrstak/net/jpsock.cpp b/xmrstak/net/jpsock.cpp
index 68b495d..f6f5c1f 100644
--- a/xmrstak/net/jpsock.cpp
+++ b/xmrstak/net/jpsock.cpp
@@ -94,7 +94,9 @@ struct jpsock::opq_json_val
opq_json_val(const Value* val) : val(val) {}
};
-jpsock::jpsock(size_t id, bool tls) : pool_id(id)
+jpsock::jpsock(size_t id, const char* sAddr, const char* sLogin, const char* sPassword, double pool_weight, bool dev_pool, bool tls, const char* tls_fp, bool nicehash) :
+ net_addr(sAddr), usr_login(sLogin), usr_pass(sPassword), tls_fp(tls_fp), pool_id(id), pool_weight(pool_weight), pool(dev_pool), nicehash(nicehash),
+ connect_time(0), connect_attempts(0), disconnect_time(0), quiet_close(false)
{
sock_init();
@@ -189,7 +191,7 @@ bool jpsock::set_socket_error_strerr(const char* a, int res)
void jpsock::jpsock_thread()
{
jpsock_thd_main();
- executor::inst()->push_event(ex_event(std::move(sSocketError), pool_id));
+ executor::inst()->push_event(ex_event(std::move(sSocketError), quiet_close, pool_id));
// If a call is wating, send an error to end it
bool bCallWaiting = false;
@@ -206,11 +208,16 @@ void jpsock::jpsock_thread()
if(bCallWaiting)
call_cond.notify_one();
- bRunning = false;
bLoggedIn = false;
+ if(bHaveSocketError && !quiet_close)
+ disconnect_time = get_timestamp();
+ else
+ disconnect_time = 0;
+
std::unique_lock<std::mutex>(job_mutex);
memset(&oCurrentJob, 0, sizeof(oCurrentJob));
+ bRunning = false;
}
bool jpsock::jpsock_thd_main()
@@ -417,15 +424,18 @@ bool jpsock::process_pool_job(const opq_json_val* params)
return true;
}
-bool jpsock::connect(const char* sAddr, std::string& sConnectError)
+bool jpsock::connect(std::string& sConnectError)
{
bHaveSocketError = false;
sSocketError.clear();
iJobDiff = 0;
-
- if(sck->set_hostname(sAddr))
+ connect_attempts++;
+
+ if(sck->set_hostname(net_addr.c_str()))
{
bRunning = true;
+ disconnect_time = 0;
+ connect_time = get_timestamp();
oRecvThd = new std::thread(&jpsock::jpsock_thread, this);
return true;
}
@@ -434,8 +444,9 @@ bool jpsock::connect(const char* sAddr, std::string& sConnectError)
return false;
}
-void jpsock::disconnect()
+void jpsock::disconnect(bool quiet)
{
+ quiet_close = quiet;
sck->close(false);
if(oRecvThd != nullptr)
@@ -446,6 +457,7 @@ void jpsock::disconnect()
}
sck->close(true);
+ quiet_close = false;
}
bool jpsock::cmd_ret_wait(const char* sPacket, opq_json_val& poResult)
@@ -493,12 +505,12 @@ bool jpsock::cmd_ret_wait(const char* sPacket, opq_json_val& poResult)
return bSuccess;
}
-bool jpsock::cmd_login(const char* sLogin, const char* sPassword)
+bool jpsock::cmd_login()
{
char cmd_buffer[1024];
snprintf(cmd_buffer, sizeof(cmd_buffer), "{\"method\":\"login\",\"params\":{\"login\":\"%s\",\"pass\":\"%s\",\"agent\":\"" AGENTID_STR "\"},\"id\":1}\n",
- sLogin, sPassword);
+ usr_login.c_str(), usr_pass.c_str());
opq_json_val oResult(nullptr);
@@ -541,6 +553,7 @@ bool jpsock::cmd_login(const char* sLogin, const char* sPassword)
}
bLoggedIn = true;
+ connect_attempts = 0;
return true;
}
OpenPOWER on IntegriCloud