summaryrefslogtreecommitdiffstats
path: root/xmrstak/misc/executor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xmrstak/misc/executor.cpp')
-rw-r--r--xmrstak/misc/executor.cpp45
1 files changed, 38 insertions, 7 deletions
diff --git a/xmrstak/misc/executor.cpp b/xmrstak/misc/executor.cpp
index cccfca7..6f34d80 100644
--- a/xmrstak/misc/executor.cpp
+++ b/xmrstak/misc/executor.cpp
@@ -388,10 +388,16 @@ void executor::on_pool_have_job(size_t pool_id, pool_job& oPoolJob)
if(dat.pool_id != pool_id)
{
- if(dat.pool_id == invalid_pool_id)
- printer::inst()->print_msg(L2, "Pool logged in.");
+ jpsock* prev_pool;
+ if(dat.pool_id != invalid_pool_id && (prev_pool = pick_pool_by_id(dat.pool_id)) != nullptr)
+ {
+ if(prev_pool->is_dev_pool())
+ printer::inst()->print_msg(L2, "Switching back to user pool.");
+ else
+ printer::inst()->print_msg(L2, "Pool switched.");
+ }
else
- printer::inst()->print_msg(L2, "Pool switched.");
+ printer::inst()->print_msg(L2, "Pool logged in.");
}
else
printer::inst()->print_msg(L3, "New block detected.");
@@ -459,6 +465,7 @@ void executor::on_miner_result(size_t pool_id, job_result& oResult)
void disable_sigpipe()
{
struct sigaction sa;
+ memset(&sa, 0, sizeof(sa));
sa.sa_handler = SIG_IGN;
sa.sa_flags = 0;
if (sigaction(SIGPIPE, &sa, 0) == -1)
@@ -521,6 +528,30 @@ void executor::ex_main()
pools.emplace_front(0, "donate.xmr-stak.net:4444", "", "", 0.0, true, false, "", true);
}
+ /* find the pool with the highest weighting to allow overwriting of the
+ * pool settings via command line options.
+ */
+ std::vector<jpsock*> sorted_pools;
+ sorted_pools.reserve(pools.size());
+ for(jpsock& pool : pools)
+ sorted_pools.emplace_back(&pool);
+ std::sort(sorted_pools.begin(), sorted_pools.end(), [](jpsock* a, jpsock* b) { return b->get_pool_weight(true) < a->get_pool_weight(true); });
+
+ // overwrite pool address if cli option is used
+ auto& poolURL = xmrstak::params::inst().poolURL;
+ if(!poolURL.empty())
+ {
+ sorted_pools[0]->set_pool_addr(poolURL.c_str());
+ }
+ // overwrite user pool login name if cli option is used
+ auto& poolUsername = xmrstak::params::inst().poolUsername;
+ if(!poolUsername.empty())
+ sorted_pools[0]->set_user_login(poolUsername.c_str());
+ // overwrite user pool login password if cli option is used
+ auto& poolPasswd = xmrstak::params::inst().poolPasswd;
+ if(!poolPasswd.empty())
+ sorted_pools[0]->set_user_passwd(poolPasswd.c_str());
+
ex_event ev;
std::thread clock_thd(&executor::ex_clock_thd, this);
@@ -624,11 +655,11 @@ inline const char* hps_format(double h, char* buf, size_t l)
{
if(std::isnormal(h) || h == 0.0)
{
- snprintf(buf, l, " %03.1f", h);
+ snprintf(buf, l, " %6.1f", h);
return buf;
}
else
- return " (na)";
+ return " (na)";
}
bool executor::motd_filter_console(std::string& motd)
@@ -722,9 +753,9 @@ void executor::hashrate_report(std::string& out)
std::transform(name.begin(), name.end(), name.begin(), ::toupper);
out.append("HASHRATE REPORT - ").append(name).append("\n");
- out.append("| ID | 10s | 60s | 15m |");
+ out.append("| ID | 10s | 60s | 15m |");
if(nthd != 1)
- out.append(" ID | 10s | 60s | 15m |\n");
+ out.append(" ID | 10s | 60s | 15m |\n");
else
out.append(1, '\n');
OpenPOWER on IntegriCloud