diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ca3d363..a5604822 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - [#1146](https://github.com/xmrig/xmrig/pull/1146) Fixed race condition in RandomX thread init. - [#1148](https://github.com/xmrig/xmrig/pull/1148) Fixed, on Linux linker marking entire executable as having an executable stack. - Fixed, for Argon2 algorithms command line options like `--threads` was ignored. +- Fixed command line options for single pool, free order allowed again. # v3.1.0 - [#1107](https://github.com/xmrig/xmrig/issues/1107#issuecomment-522235892) Added Argon2 algorithm family: `argon2/chukwa` and `argon2/wrkz`. diff --git a/src/base/kernel/config/BaseTransform.cpp b/src/base/kernel/config/BaseTransform.cpp index 8043c6e9..12e7d848 100644 --- a/src/base/kernel/config/BaseTransform.cpp +++ b/src/base/kernel/config/BaseTransform.cpp @@ -33,11 +33,12 @@ #endif -#include "base/kernel/config/BaseTransform.h" -#include "base/kernel/Process.h" -#include "base/io/log/Log.h" -#include "base/kernel/interfaces/IConfig.h" #include "base/io/json/JsonChain.h" +#include "base/io/log/Log.h" +#include "base/kernel/config/BaseTransform.h" +#include "base/kernel/interfaces/IConfig.h" +#include "base/kernel/Process.h" +#include "base/net/stratum/Pool.h" #include "core/config/Config_platform.h" @@ -138,7 +139,19 @@ void xmrig::BaseTransform::transform(rapidjson::Document &doc, int key, const ch break; case IConfig::UrlKey: /* --url */ - return add(doc, kPools, "url", arg, true); + { + if (!doc.HasMember(kPools)) { + doc.AddMember(rapidjson::StringRef(kPools), rapidjson::kArrayType, doc.GetAllocator()); + } + + rapidjson::Value &array = doc[kPools]; + if (array.Size() == 0 || Pool(array[array.Size() - 1]).isValid()) { + array.PushBack(rapidjson::kObjectType, doc.GetAllocator()); + } + + set(doc, array[array.Size() - 1], "url", arg); + break; + } case IConfig::UserKey: /* --user */ return add(doc, kPools, "user", arg); diff --git a/src/base/net/stratum/Pool.cpp b/src/base/net/stratum/Pool.cpp index 4d15ea47..ba31c35d 100644 --- a/src/base/net/stratum/Pool.cpp +++ b/src/base/net/stratum/Pool.cpp @@ -200,6 +200,9 @@ bool xmrig::Pool::isEqual(const Pool &other) const bool xmrig::Pool::parse(const char *url) { assert(url != nullptr); + if (url == nullptr) { + return false; + } const char *p = strstr(url, "://"); const char *base = url;