1
0
mirror of https://github.com/xmrig/xmrig.git synced 2025-12-30 23:22:54 -05:00

Compare commits

..

9 Commits

Author SHA1 Message Date
xmrig
7b016fd9ce Merge pull request #3436 from SChernykh/dev
Thread-safe FileLogWriter
2024-03-14 21:46:45 +07:00
SChernykh
688d4f5ee1 Thread-safe FileLogWriter 2024-03-04 08:45:22 +01:00
xmrig
64913e3163 Merge pull request #3434 from SChernykh/dev
Update bug_report.md
2024-02-29 14:33:07 +07:00
SChernykh
48fa095e3e Update bug_report.md 2024-02-29 08:31:16 +01:00
XMRig
c9b9ef51ee #2800 Fixed donation with ghostrider algorithm for builds without KawPow algorithm. 2024-02-29 09:38:47 +07:00
xmrig
dd782c7001 Merge pull request #3431 from SChernykh/dev
Stratum: better check of the login response
2024-02-28 11:25:34 +07:00
SChernykh
b49197f808 Stratum: better check of the login response 2024-02-27 23:39:23 +01:00
XMRig
f9c4c57216 v6.21.2-dev 2024-02-25 23:00:45 +07:00
XMRig
a5b8b85967 Merge branch 'master' into dev 2024-02-25 23:00:11 +07:00
6 changed files with 86 additions and 23 deletions

View File

@@ -17,6 +17,9 @@ Steps to reproduce the behavior.
A clear and concise description of what you expected to happen. A clear and concise description of what you expected to happen.
**Required data** **Required data**
- XMRig version
- Either the exact link to a release you downloaded from https://github.com/xmrig/xmrig/releases
- Or the exact command lines that you used to build XMRig
- Miner log as text or screenshot - Miner log as text or screenshot
- Config file or command line (without wallets) - Config file or command line (without wallets)
- OS: [e.g. Windows] - OS: [e.g. Windows]

View File

@@ -22,7 +22,6 @@
#include <cassert> #include <cassert>
#include <uv.h>
namespace xmrig { namespace xmrig {
@@ -40,6 +39,32 @@ static void fsWriteCallback(uv_fs_t *req)
} // namespace xmrig } // namespace xmrig
xmrig::FileLogWriter::FileLogWriter()
{
init();
}
xmrig::FileLogWriter::FileLogWriter(const char* fileName)
{
init();
open(fileName);
}
xmrig::FileLogWriter::~FileLogWriter()
{
uv_close(reinterpret_cast<uv_handle_t*>(&m_flushAsync), nullptr);
uv_mutex_destroy(&m_buffersLock);
}
void xmrig::FileLogWriter::init()
{
uv_mutex_init(&m_buffersLock);
uv_async_init(uv_default_loop(), &m_flushAsync, on_flush);
m_flushAsync.data = this;
}
bool xmrig::FileLogWriter::open(const char *fileName) bool xmrig::FileLogWriter::open(const char *fileName)
{ {
assert(fileName != nullptr); assert(fileName != nullptr);
@@ -77,11 +102,12 @@ bool xmrig::FileLogWriter::write(const char *data, size_t size)
uv_buf_t buf = uv_buf_init(new char[size], size); uv_buf_t buf = uv_buf_init(new char[size], size);
memcpy(buf.base, data, size); memcpy(buf.base, data, size);
auto req = new uv_fs_t; uv_mutex_lock(&m_buffersLock);
req->data = buf.base;
uv_fs_write(uv_default_loop(), req, m_file, &buf, 1, m_pos, fsWriteCallback); m_buffers.emplace_back(buf);
m_pos += size; uv_async_send(&m_flushAsync);
uv_mutex_unlock(&m_buffersLock);
return true; return true;
} }
@@ -89,18 +115,38 @@ bool xmrig::FileLogWriter::write(const char *data, size_t size)
bool xmrig::FileLogWriter::writeLine(const char *data, size_t size) bool xmrig::FileLogWriter::writeLine(const char *data, size_t size)
{ {
const uv_buf_t buf[2] = { if (!isOpen()) {
uv_buf_init(new char[size], size), return false;
uv_buf_init(const_cast<char *>(m_endl), sizeof(m_endl) - 1) }
};
memcpy(buf[0].base, data, size); constexpr size_t N = sizeof(m_endl) - 1;
auto req = new uv_fs_t; uv_buf_t buf = uv_buf_init(new char[size + N], size + N);
req->data = buf[0].base; memcpy(buf.base, data, size);
memcpy(buf.base + size, m_endl, N);
uv_fs_write(uv_default_loop(), req, m_file, buf, 2, m_pos, fsWriteCallback); uv_mutex_lock(&m_buffersLock);
m_pos += (buf[0].len + buf[1].len);
m_buffers.emplace_back(buf);
uv_async_send(&m_flushAsync);
uv_mutex_unlock(&m_buffersLock);
return true; return true;
} }
void xmrig::FileLogWriter::flush()
{
uv_mutex_lock(&m_buffersLock);
for (uv_buf_t buf : m_buffers) {
uv_fs_t* req = new uv_fs_t;
req->data = buf.base;
uv_fs_write(uv_default_loop(), req, m_file, &buf, 1, m_pos, fsWriteCallback);
m_pos += buf.len;
}
m_buffers.clear();
uv_mutex_unlock(&m_buffersLock);
}

View File

@@ -22,6 +22,8 @@
#include <cstddef> #include <cstddef>
#include <cstdint> #include <cstdint>
#include <vector>
#include <uv.h>
namespace xmrig { namespace xmrig {
@@ -30,8 +32,10 @@ namespace xmrig {
class FileLogWriter class FileLogWriter
{ {
public: public:
FileLogWriter() = default; FileLogWriter();
FileLogWriter(const char *fileName) { open(fileName); } FileLogWriter(const char* fileName);
~FileLogWriter();
inline bool isOpen() const { return m_file >= 0; } inline bool isOpen() const { return m_file >= 0; }
inline int64_t pos() const { return m_pos; } inline int64_t pos() const { return m_pos; }
@@ -49,6 +53,16 @@ private:
int m_file = -1; int m_file = -1;
int64_t m_pos = 0; int64_t m_pos = 0;
uv_mutex_t m_buffersLock;
std::vector<uv_buf_t> m_buffers;
uv_async_t m_flushAsync;
void init();
static void on_flush(uv_async_t* async) { reinterpret_cast<FileLogWriter*>(async->data)->flush(); }
void flush();
}; };

View File

@@ -1,7 +1,7 @@
/* XMRig /* XMRig
* Copyright (c) 2019 jtgrassie <https://github.com/jtgrassie> * Copyright (c) 2019 jtgrassie <https://github.com/jtgrassie>
* Copyright (c) 2018-2023 SChernykh <https://github.com/SChernykh> * Copyright (c) 2018-2024 SChernykh <https://github.com/SChernykh>
* Copyright (c) 2016-2023 XMRig <https://github.com/xmrig>, <support@xmrig.com> * Copyright (c) 2016-2024 XMRig <https://github.com/xmrig>, <support@xmrig.com>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -609,7 +609,7 @@ bool xmrig::Client::parseLogin(const rapidjson::Value &result, int *code)
parseExtensions(result); parseExtensions(result);
const bool rc = parseJob(result["job"], code); const bool rc = parseJob(Json::getObject(result, "job"), code);
m_jobs = 0; m_jobs = 0;
return rc; return rc;
@@ -844,7 +844,7 @@ void xmrig::Client::parseResponse(int64_t id, const rapidjson::Value &result, co
m_listener->onLoginSuccess(this); m_listener->onLoginSuccess(this);
if (m_job.isValid()) { if (m_job.isValid()) {
m_listener->onJobReceived(this, m_job, result["job"]); m_listener->onJobReceived(this, m_job, Json::getObject(result, "job"));
} }
return; return;

View File

@@ -63,7 +63,7 @@ xmrig::DonateStrategy::DonateStrategy(Controller *controller, IStrategyListener
keccak(reinterpret_cast<const uint8_t *>(user.data()), user.size(), hash); keccak(reinterpret_cast<const uint8_t *>(user.data()), user.size(), hash);
Cvt::toHex(m_userId, sizeof(m_userId), hash, 32); Cvt::toHex(m_userId, sizeof(m_userId), hash, 32);
# ifdef XMRIG_ALGO_KAWPOW # if defined XMRIG_ALGO_KAWPOW || defined XMRIG_ALGO_GHOSTRIDER
constexpr Pool::Mode mode = Pool::MODE_AUTO_ETH; constexpr Pool::Mode mode = Pool::MODE_AUTO_ETH;
# else # else
constexpr Pool::Mode mode = Pool::MODE_POOL; constexpr Pool::Mode mode = Pool::MODE_POOL;

View File

@@ -22,7 +22,7 @@
#define APP_ID "xmrig" #define APP_ID "xmrig"
#define APP_NAME "XMRig" #define APP_NAME "XMRig"
#define APP_DESC "XMRig miner" #define APP_DESC "XMRig miner"
#define APP_VERSION "6.21.1" #define APP_VERSION "6.21.2-dev"
#define APP_DOMAIN "xmrig.com" #define APP_DOMAIN "xmrig.com"
#define APP_SITE "www.xmrig.com" #define APP_SITE "www.xmrig.com"
#define APP_COPYRIGHT "Copyright (C) 2016-2024 xmrig.com" #define APP_COPYRIGHT "Copyright (C) 2016-2024 xmrig.com"
@@ -30,7 +30,7 @@
#define APP_VER_MAJOR 6 #define APP_VER_MAJOR 6
#define APP_VER_MINOR 21 #define APP_VER_MINOR 21
#define APP_VER_PATCH 1 #define APP_VER_PATCH 2
#ifdef _MSC_VER #ifdef _MSC_VER
# if (_MSC_VER >= 1930) # if (_MSC_VER >= 1930)