1
0
mirror of https://github.com/xmrig/xmrig.git synced 2025-12-28 22:50:26 -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.
**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
- Config file or command line (without wallets)
- OS: [e.g. Windows]

View File

@@ -22,7 +22,6 @@
#include <cassert>
#include <uv.h>
namespace xmrig {
@@ -40,6 +39,32 @@ static void fsWriteCallback(uv_fs_t *req)
} // 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)
{
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);
memcpy(buf.base, data, size);
auto req = new uv_fs_t;
req->data = buf.base;
uv_mutex_lock(&m_buffersLock);
uv_fs_write(uv_default_loop(), req, m_file, &buf, 1, m_pos, fsWriteCallback);
m_pos += size;
m_buffers.emplace_back(buf);
uv_async_send(&m_flushAsync);
uv_mutex_unlock(&m_buffersLock);
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)
{
const uv_buf_t buf[2] = {
uv_buf_init(new char[size], size),
uv_buf_init(const_cast<char *>(m_endl), sizeof(m_endl) - 1)
};
if (!isOpen()) {
return false;
}
memcpy(buf[0].base, data, size);
constexpr size_t N = sizeof(m_endl) - 1;
auto req = new uv_fs_t;
req->data = buf[0].base;
uv_buf_t buf = uv_buf_init(new char[size + N], size + N);
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);
m_pos += (buf[0].len + buf[1].len);
uv_mutex_lock(&m_buffersLock);
m_buffers.emplace_back(buf);
uv_async_send(&m_flushAsync);
uv_mutex_unlock(&m_buffersLock);
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 <cstdint>
#include <vector>
#include <uv.h>
namespace xmrig {
@@ -30,8 +32,10 @@ namespace xmrig {
class FileLogWriter
{
public:
FileLogWriter() = default;
FileLogWriter(const char *fileName) { open(fileName); }
FileLogWriter();
FileLogWriter(const char* fileName);
~FileLogWriter();
inline bool isOpen() const { return m_file >= 0; }
inline int64_t pos() const { return m_pos; }
@@ -49,6 +53,16 @@ private:
int m_file = -1;
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
* Copyright (c) 2019 jtgrassie <https://github.com/jtgrassie>
* Copyright (c) 2018-2023 SChernykh <https://github.com/SChernykh>
* Copyright (c) 2016-2023 XMRig <https://github.com/xmrig>, <support@xmrig.com>
* Copyright (c) 2018-2024 SChernykh <https://github.com/SChernykh>
* Copyright (c) 2016-2024 XMRig <https://github.com/xmrig>, <support@xmrig.com>
*
* 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
@@ -609,7 +609,7 @@ bool xmrig::Client::parseLogin(const rapidjson::Value &result, int *code)
parseExtensions(result);
const bool rc = parseJob(result["job"], code);
const bool rc = parseJob(Json::getObject(result, "job"), code);
m_jobs = 0;
return rc;
@@ -844,7 +844,7 @@ void xmrig::Client::parseResponse(int64_t id, const rapidjson::Value &result, co
m_listener->onLoginSuccess(this);
if (m_job.isValid()) {
m_listener->onJobReceived(this, m_job, result["job"]);
m_listener->onJobReceived(this, m_job, Json::getObject(result, "job"));
}
return;

View File

@@ -63,7 +63,7 @@ xmrig::DonateStrategy::DonateStrategy(Controller *controller, IStrategyListener
keccak(reinterpret_cast<const uint8_t *>(user.data()), user.size(), hash);
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;
# else
constexpr Pool::Mode mode = Pool::MODE_POOL;

View File

@@ -22,7 +22,7 @@
#define APP_ID "xmrig"
#define APP_NAME "XMRig"
#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_SITE "www.xmrig.com"
#define APP_COPYRIGHT "Copyright (C) 2016-2024 xmrig.com"
@@ -30,7 +30,7 @@
#define APP_VER_MAJOR 6
#define APP_VER_MINOR 21
#define APP_VER_PATCH 1
#define APP_VER_PATCH 2
#ifdef _MSC_VER
# if (_MSC_VER >= 1930)