From c080d5b962fe4bb77342f92293bff68aa332c996 Mon Sep 17 00:00:00 2001
From: SChernykh <sergey.v.chernykh@gmail.com>
Date: Tue, 6 Apr 2021 23:02:10 +0200
Subject: [PATCH 1/2] Fixed broken "coin" setting functionality

---
 src/base/net/stratum/Client.cpp           |  9 +++++++--
 src/base/net/stratum/DaemonClient.cpp     |  4 +++-
 src/base/net/stratum/SelfSelectClient.cpp | 13 +++++++++----
 3 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/src/base/net/stratum/Client.cpp b/src/base/net/stratum/Client.cpp
index 78c0976f7..e4d1d53ae 100644
--- a/src/base/net/stratum/Client.cpp
+++ b/src/base/net/stratum/Client.cpp
@@ -379,11 +379,16 @@ bool xmrig::Client::parseJob(const rapidjson::Value &params, int *code)
     }
 
     const char *algo = Json::getString(params, "algo");
+    const char *blobData = Json::getString(params, "blob");
     if (algo) {
         job.setAlgorithm(algo);
     }
     else if (m_pool.coin().isValid()) {
-        job.setAlgorithm(m_pool.coin().algorithm(job.blob()[0]));
+        uint8_t blobVersion = 0;
+        if (blobData) {
+            Cvt::fromHex(&blobVersion, 1, blobData, 2);
+        }
+        job.setAlgorithm(m_pool.coin().algorithm(blobVersion));
     }
 
 #   ifdef XMRIG_FEATURE_HTTP
@@ -399,7 +404,7 @@ bool xmrig::Client::parseJob(const rapidjson::Value &params, int *code)
     else
 #   endif
     {
-        if (!job.setBlob(params["blob"].GetString())) {
+        if (!job.setBlob(blobData)) {
             *code = 4;
             return false;
         }
diff --git a/src/base/net/stratum/DaemonClient.cpp b/src/base/net/stratum/DaemonClient.cpp
index c429039dd..5bfe095ce 100644
--- a/src/base/net/stratum/DaemonClient.cpp
+++ b/src/base/net/stratum/DaemonClient.cpp
@@ -248,7 +248,9 @@ bool xmrig::DaemonClient::parseJob(const rapidjson::Value &params, int *code)
     }
 
     if (m_pool.coin().isValid()) {
-        job.setAlgorithm(m_pool.coin().algorithm(job.blob()[0]));
+        uint8_t blobVersion = 0;
+        Cvt::fromHex(&blobVersion, 1, m_blockhashingblob.data(), 2);
+        job.setAlgorithm(m_pool.coin().algorithm(blobVersion));
     }
 
     if (blocktemplate.isNull() || !job.setBlob(m_blockhashingblob)) {
diff --git a/src/base/net/stratum/SelfSelectClient.cpp b/src/base/net/stratum/SelfSelectClient.cpp
index 7f7ee5447..a902e252f 100644
--- a/src/base/net/stratum/SelfSelectClient.cpp
+++ b/src/base/net/stratum/SelfSelectClient.cpp
@@ -130,12 +130,17 @@ bool xmrig::SelfSelectClient::parseResponse(int64_t id, rapidjson::Value &result
         }
     }
 
-    if (!m_job.setBlob(result[kBlockhashingBlob].GetString())) {
-        return false;
+    const char *blobData = Json::getString(result, kBlockhashingBlob);
+    if (pool().coin().isValid()) {
+        uint8_t blobVersion = 0;
+        if (blobData) {
+            Cvt::fromHex(&blobVersion, 1, blobData, 2);
+        }
+        m_job.setAlgorithm(pool().coin().algorithm(blobVersion));
     }
 
-    if (pool().coin().isValid()) {
-        m_job.setAlgorithm(pool().coin().algorithm(m_job.blob()[0]));
+    if (!m_job.setBlob(blobData)) {
+        return false;
     }
 
     m_job.setHeight(Json::getUint64(result, kHeight));

From 3171b06048fc7b102a48a3413b4033af70b1d292 Mon Sep 17 00:00:00 2001
From: xmrig <support@xmrig.com>
Date: Wed, 7 Apr 2021 10:32:17 +0700
Subject: [PATCH 2/2] Update CHANGELOG.md

---
 CHANGELOG.md | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index ee495528d..93a4c6d0c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+# v6.11.1
+- [#2239](https://github.com/xmrig/xmrig/pull/2239) Fixed broken `coin` setting functionality.
+
 # v6.11.0
 - [#2196](https://github.com/xmrig/xmrig/pull/2196) Improved DNS subsystem and added new DNS specific options.
 - [#2172](https://github.com/xmrig/xmrig/pull/2172) Fixed build on Alpine 3.13.