diff --git a/src/proxy/Proxy.cpp b/src/proxy/Proxy.cpp index 269a2a7..9554a2e 100644 --- a/src/proxy/Proxy.cpp +++ b/src/proxy/Proxy.cpp @@ -79,7 +79,11 @@ xmrig::Proxy::Proxy(Controller *controller) : splitter = new NonceSplitter(controller); } else if (controller->config()->mode() == Config::EXTRA_NONCE_MODE) { - splitter = new ExtraNonceSplitter(controller); + splitter = ExtraNonceSplitter::Create(controller); + if (!splitter) { + LOG_WARN("Switching to nicehash mode"); + splitter = new NonceSplitter(controller); + } } else { splitter = new SimpleSplitter(controller); diff --git a/src/proxy/splitters/extra_nonce/ExtraNonceSplitter.cpp b/src/proxy/splitters/extra_nonce/ExtraNonceSplitter.cpp index fea7c12..6d43559 100644 --- a/src/proxy/splitters/extra_nonce/ExtraNonceSplitter.cpp +++ b/src/proxy/splitters/extra_nonce/ExtraNonceSplitter.cpp @@ -38,6 +38,18 @@ #define LABEL(x) " \x1B[01;30m" x ":\x1B[0m " +xmrig::ExtraNonceSplitter* xmrig::ExtraNonceSplitter::Create(Controller* controller) +{ + for (const xmrig::Pool& pool : controller->config()->pools().data()) { + if ((pool.algorithm() == xmrig::Algorithm::ASTROBWT_DERO) || (pool.coin() == xmrig::Coin::DERO)) { + LOG_ERR("extra_nonce mode is incompatible with Dero mining"); + return nullptr; + } + } + return new ExtraNonceSplitter(controller); +} + + xmrig::ExtraNonceSplitter::ExtraNonceSplitter(Controller *controller) : Splitter(controller) { } diff --git a/src/proxy/splitters/extra_nonce/ExtraNonceSplitter.h b/src/proxy/splitters/extra_nonce/ExtraNonceSplitter.h index 5d8b785..4dbefb7 100644 --- a/src/proxy/splitters/extra_nonce/ExtraNonceSplitter.h +++ b/src/proxy/splitters/extra_nonce/ExtraNonceSplitter.h @@ -46,10 +46,12 @@ class ExtraNonceSplitter : public Splitter public: XMRIG_DISABLE_COPY_MOVE_DEFAULT(ExtraNonceSplitter) - ExtraNonceSplitter(Controller *controller); + static ExtraNonceSplitter* Create(Controller* controller); ~ExtraNonceSplitter() override; protected: + ExtraNonceSplitter(Controller* controller); + Upstreams upstreams() const override; void connect() override; void gc() override;