Browse Source

Merge branch 'master' into peercoin

peercoin
Intel 11 years ago
parent
commit
74117e9e16
  1. 4
      src/server/poolserver/DataMgr/DataMgr.cpp
  2. 2
      src/server/poolserver/NetworkMgr/NetworkMgr.cpp
  3. 24
      src/server/poolserver/Stratum/Client.cpp
  4. 2
      src/server/poolserver/Stratum/Server.cpp
  5. 2
      src/server/poolserver/Stratum/Server.h
  6. 18
      src/server/shared/Logging/Log.cpp

4
src/server/poolserver/DataMgr/DataMgr.cpp

@ -7,14 +7,12 @@ DataMgr* DataMgr::singleton = 0;
void DataMgr::Upload() void DataMgr::Upload()
{ {
sLog.Info(LOG_SERVER, "We have %u shares", Size()); sLog.Info(LOG_SERVER, "Uploading %u shares", Size());
uint32 bulkCount = sConfig.Get<uint32>("ShareUploadBulkCount"); uint32 bulkCount = sConfig.Get<uint32>("ShareUploadBulkCount");
while (Size() > sConfig.Get<uint32>("ShareUploadMinCount")) while (Size() > sConfig.Get<uint32>("ShareUploadMinCount"))
{ {
sLog.Info(LOG_SERVER, "Uploading %u shares to database", Size());
std::string query("INSERT INTO `shares` (`rem_host`, `username`, `our_result`, `upstream_result`, `reason`, `time`, `difficulty`) VALUES "); std::string query("INSERT INTO `shares` (`rem_host`, `username`, `our_result`, `upstream_result`, `reason`, `time`, `difficulty`) VALUES ");
for (int i = 0; i < bulkCount; ++i) for (int i = 0; i < bulkCount; ++i)
{ {

2
src/server/poolserver/NetworkMgr/NetworkMgr.cpp

@ -80,7 +80,7 @@ void NetworkMgr::UpdateBlockTemplate()
// Set // Set
_curBlockTmpl = block; _curBlockTmpl = block;
sLog.Debug(LOG_SERVER, "Fetched block template from rpc #%u", i); sLog.Info(LOG_SERVER, "Fetched block template from rpc #%u", i);
// Break from loop // Break from loop
break; break;

24
src/server/poolserver/Stratum/Client.cpp

@ -90,7 +90,7 @@ namespace Stratum
// check username // check username
std::string username = params[0].GetString(); std::string username = params[0].GetString();
if (!_workers.count(username)) { if (!_workers.count(username)) {
sLog.Error(LOG_STRATUM, "%s: Worker not authenticated", username.c_str()); sLog.Warn(LOG_STRATUM, "%s: Worker not authenticated", username.c_str());
JSON response; JSON response;
response["id"] = msg["id"]; response["id"] = msg["id"];
response["result"]; response["result"];
@ -138,7 +138,7 @@ namespace Stratum
BinaryData extranonce2 = Util::ASCIIToBin(params[2].GetString()); BinaryData extranonce2 = Util::ASCIIToBin(params[2].GetString());
if (extranonce2.size() != 4) { if (extranonce2.size() != 4) {
sLog.Error(LOG_STRATUM, "Wrong extranonce size"); sLog.Warn(LOG_STRATUM, "Wrong extranonce size");
JSON response; JSON response;
response["id"] = msg["id"]; response["id"] = msg["id"];
response["result"]; response["result"];
@ -151,7 +151,7 @@ namespace Stratum
ByteBuffer timebuf(Util::Reverse(Util::ASCIIToBin(params[3].GetString()))); ByteBuffer timebuf(Util::Reverse(Util::ASCIIToBin(params[3].GetString())));
if (timebuf.Size() != 4) { if (timebuf.Size() != 4) {
sLog.Error(LOG_STRATUM, "Wrong ntime size"); sLog.Warn(LOG_STRATUM, "Wrong ntime size");
JSON response; JSON response;
response["id"] = msg["id"]; response["id"] = msg["id"];
response["result"]; response["result"];
@ -164,7 +164,7 @@ namespace Stratum
ByteBuffer noncebuf(Util::Reverse(Util::ASCIIToBin(params[4].GetString()))); ByteBuffer noncebuf(Util::Reverse(Util::ASCIIToBin(params[4].GetString())));
if (noncebuf.Size() != 4) { if (noncebuf.Size() != 4) {
sLog.Error(LOG_STRATUM, "Wrong nonce size"); sLog.Warn(LOG_STRATUM, "Wrong nonce size");
JSON response; JSON response;
response["id"] = msg["id"]; response["id"] = msg["id"];
response["result"]; response["result"];
@ -180,9 +180,11 @@ namespace Stratum
sharebuf << noncebuf << extranonce2; sharebuf << noncebuf << extranonce2;
uint64 share; uint64 share;
sharebuf >> share; sharebuf >> share;
sLog.Debug(LOG_STRATUM, "Job::SubmitShare: Nonce: %s, Extranonse: %s, Share: %u", Util::BinToASCII(noncebuf.Binary()).c_str(), Util::BinToASCII(extranonce2).c_str(), share);
sLog.Debug(LOG_STRATUM, "Job::SubmitShare: Nonce: %s, Extranonce: %s, Share: %u", Util::BinToASCII(noncebuf.Binary()).c_str(), Util::BinToASCII(extranonce2).c_str(), share);
if (!job.SubmitShare(share)) { if (!job.SubmitShare(share)) {
sLog.Error(LOG_STRATUM, "%s: Duplicate share", username.c_str()); sLog.Warn(LOG_STRATUM, "%s: Duplicate share", username.c_str());
DataMgr::Instance()->Push(Share(_ip, username, false, "Duplicate share", Util::Date(), job.diff)); DataMgr::Instance()->Push(Share(_ip, username, false, "Duplicate share", Util::Date(), job.diff));
_shareLimiter.LogBad(); _shareLimiter.LogBad();
@ -223,7 +225,7 @@ namespace Stratum
// Check if difficulty meets job diff // Check if difficulty meets job diff
if (target > job.jobTarget) { if (target > job.jobTarget) {
sLog.Error(LOG_STRATUM, "%s: Share above target", username.c_str()); sLog.Warn(LOG_STRATUM, "%s: Share above target", username.c_str());
DataMgr::Instance()->Push(Share(_ip, username, false, "Share above target", Util::Date(), job.diff)); DataMgr::Instance()->Push(Share(_ip, username, false, "Share above target", Util::Date(), job.diff));
_shareLimiter.LogBad(); _shareLimiter.LogBad();
@ -239,7 +241,7 @@ namespace Stratum
// Check if block meets criteria // Check if block meets criteria
if (target <= job.blockTarget) { if (target <= job.blockTarget) {
sLog.Info(LOG_SERVER, "We have found a block candidate!"); sLog.Info(LOG_STRATUM, "We have found a block candidate!");
if (_server->SubmitBlock(block)) { if (_server->SubmitBlock(block)) {
std::string query("INSERT INTO `shares` (`rem_host`, `username`, `our_result`, `upstream_result`, `reason`, `solution`, `time`, `difficulty`) VALUES "); std::string query("INSERT INTO `shares` (`rem_host`, `username`, `our_result`, `upstream_result`, `reason`, `solution`, `time`, `difficulty`) VALUES ");
@ -381,7 +383,7 @@ namespace Stratum
try { try {
OnMessage(JSON::FromString(_recvMessage)); OnMessage(JSON::FromString(_recvMessage));
} catch (std::exception& e) { } catch (std::exception& e) {
sLog.Error(LOG_SERVER, "Exception caught while parsing json: %s", e.what()); sLog.Debug(LOG_STRATUM, "Exception caught while parsing json: %s", e.what());
} }
_recvMessage.clear(); _recvMessage.clear();
@ -389,6 +391,10 @@ namespace Stratum
_recvMessage += c; _recvMessage += c;
} }
// Check if message doesn't exceed maximum packet size
if (_recvMessage.size() > MAX_PACKET)
Disconnect();
StartRead(); StartRead();
} else { } else {
// Client disconnected // Client disconnected

2
src/server/poolserver/Stratum/Server.cpp

@ -11,7 +11,7 @@ namespace Stratum
_StartAccept(); _StartAccept();
sLog.Debug(LOG_STRATUM, "Stratum server started"); sLog.Info(LOG_STRATUM, "Stratum server started");
} }
void Server::SendToAll(JSON msg) void Server::SendToAll(JSON msg)

2
src/server/poolserver/Stratum/Server.h

@ -18,6 +18,8 @@
#include <set> #include <set>
#include <vector> #include <vector>
#define MAX_PACKET 4096
using namespace boost; using namespace boost;
using namespace boost::asio::ip; using namespace boost::asio::ip;

18
src/server/shared/Logging/Log.cpp

@ -74,36 +74,38 @@ void Log::Write(LogLevel level, LogType type, std::string msg)
{ {
boost::lock_guard<boost::mutex> lock(_mutex); boost::lock_guard<boost::mutex> lock(_mutex);
std::string timestamp = Util::Date("%b-%d %H:%M:%S");
switch(level) switch(level)
{ {
case LOG_LEVEL_ERROR: case LOG_LEVEL_ERROR:
if (sConfig.Get<uint32_t>("LogConsoleLevel") >= level) if (sConfig.Get<uint32_t>("LogConsoleLevel") >= level)
std::cout << "[ERROR] " << msg << std::endl; std::cout << timestamp << " [ERROR] " << msg << std::endl;
if (sConfig.Get<uint32_t>("LogFileLevel") >= level) if (sConfig.Get<uint32_t>("LogFileLevel") >= level)
AppendFile("[ERROR] " + msg); AppendFile(timestamp + " [ERROR] " + msg);
break; break;
case LOG_LEVEL_WARN: case LOG_LEVEL_WARN:
if (sConfig.Get<uint32_t>("LogConsoleLevel") >= level) if (sConfig.Get<uint32_t>("LogConsoleLevel") >= level)
std::cout << "[WARN] " << msg << std::endl; std::cout << timestamp << " [WARN] " << msg << std::endl;
if (sConfig.Get<uint32_t>("LogFileLevel") >= level) if (sConfig.Get<uint32_t>("LogFileLevel") >= level)
AppendFile("[WARN] " + msg); AppendFile(timestamp + " [WARN] " + msg);
break; break;
case LOG_LEVEL_INFO: case LOG_LEVEL_INFO:
if (sConfig.Get<uint32_t>("LogConsoleLevel") >= level) if (sConfig.Get<uint32_t>("LogConsoleLevel") >= level)
std::cout << "[INFO] " << msg << std::endl; std::cout << timestamp << " [INFO] " << msg << std::endl;
if (sConfig.Get<uint32_t>("LogFileLevel") >= level) if (sConfig.Get<uint32_t>("LogFileLevel") >= level)
AppendFile("[INFO] " + msg); AppendFile(timestamp + " [INFO] " + msg);
break; break;
case LOG_LEVEL_DEBUG: case LOG_LEVEL_DEBUG:
if (sConfig.Get<uint32_t>("LogConsoleLevel") >= level) { if (sConfig.Get<uint32_t>("LogConsoleLevel") >= level) {
uint32_t debugmask = sConfig.Get<uint32_t>("LogConsoleDebugMask"); uint32_t debugmask = sConfig.Get<uint32_t>("LogConsoleDebugMask");
if (debugmask & uint32_t(pow(2, type))) if (debugmask & uint32_t(pow(2, type)))
std::cout << "[DEBUG] " << msg << std::endl; std::cout << timestamp << " [DEBUG] " << msg << std::endl;
} }
if (sConfig.Get<uint32_t>("LogFileLevel") >= level) { if (sConfig.Get<uint32_t>("LogFileLevel") >= level) {
uint32_t debugmask = sConfig.Get<uint32_t>("LogFileDebugMask"); uint32_t debugmask = sConfig.Get<uint32_t>("LogFileDebugMask");
if (debugmask & uint32_t(pow(2, type))) if (debugmask & uint32_t(pow(2, type)))
AppendFile("[DEBUG] " + msg); AppendFile(timestamp + " [DEBUG] " + msg);
} }
break; break;
} }

Loading…
Cancel
Save