mirror of
https://github.com/xmrig/xmrig.git
synced 2025-12-30 23:22:54 -05:00
Compare commits
9 Commits
v6.21.1
...
7b016fd9ce
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7b016fd9ce | ||
|
|
688d4f5ee1 | ||
|
|
64913e3163 | ||
|
|
48fa095e3e | ||
|
|
c9b9ef51ee | ||
|
|
dd782c7001 | ||
|
|
b49197f808 | ||
|
|
f9c4c57216 | ||
|
|
a5b8b85967 |
3
.github/ISSUE_TEMPLATE/bug_report.md
vendored
3
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -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]
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user