From c7e61d681ba45217f8073a2fa368f2d50d42ebca Mon Sep 17 00:00:00 2001 From: Andrea Baccega Date: Tue, 4 Mar 2014 22:58:00 +0100 Subject: [PATCH] Fixed mpos compatibility layer --- libs/mposCompatibility.js | 18 ++++++++++++++---- libs/poolWorker.js | 12 +++++++----- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/libs/mposCompatibility.js b/libs/mposCompatibility.js index ae240d8..d139be0 100644 --- a/libs/mposCompatibility.js +++ b/libs/mposCompatibility.js @@ -1,5 +1,5 @@ var mysql = require('mysql'); - +var cluster = require('cluster'); module.exports = function(logger, poolConfigs){ var dbConnections = (function(){ @@ -92,14 +92,24 @@ module.exports = function(logger, poolConfigs){ }; - this.handleShare = function(isValidShare, isValidBlock, data){ - + this.handleShare = function(data){ + var isValidShare = data.isValidShare; + var isValidBlock = data.isValidBlock; if ((!data.coin in dbConnections)) return; var connection = dbConnections[data.coin]; + var dbData = [ + data.share.ip, + data.share.worker, + isValidShare ? 'Y' : 'N', + isValidBlock ? 'Y' : 'N', + data.share.difficulty, + typeof(data.share.error)==='undefined'?null:data.share.error, + typeof(data.solution)==='undefined'?'':data.solution // solution? + ]; connection.query( 'INSERT INTO `shares` SET time = NOW(), rem_host = ?, username = ?, our_result = ?, upstream_result = ?, difficulty = ?, reason = ?, solution = ?', - [data.ip, data.worker, isValidShare ? 'Y' : 'N', isValidBlock ? 'Y' : 'N', data.difficulty, data.error, data.solution], + dbData, function(err, result) { if (err) logger.logError('shareProcessor', 'mysql', 'MySQL insert error when adding share: ' + diff --git a/libs/poolWorker.js b/libs/poolWorker.js index beb429a..c280b6c 100644 --- a/libs/poolWorker.js +++ b/libs/poolWorker.js @@ -28,8 +28,9 @@ module.exports = function(logger){ break; case 'mposAuth': var callbackId = message.callbackId; - if (callbackId in mposAuthCallbacks) + if (callbackId in mposAuthCallbacks) { mposAuthCallbacks[callbackId](message.authorized); + } break; } }); @@ -93,7 +94,7 @@ module.exports = function(logger){ var pool = Stratum.createPool(poolOptions, authorizeFN); - pool.on('share', function(isValidShare, isValidBlock, data){ + pool.on('share', function(isValidShare, isValidBlock, data, blockHex){ var shareData = JSON.stringify(data); @@ -107,17 +108,18 @@ module.exports = function(logger){ logDebug(logIdentify, 'client', 'Valid share submitted, share data: ' + shareData); process.send({ type: 'share', - share: shareData, + share: data, coin: poolOptions.coin.name, isValidShare: isValidShare, - isValidBlock: isValidBlock + isValidBlock: isValidBlock, + solution: blockHex }); if (isValidBlock){ logDebug(logIdentify, 'client', 'Block found, solution: ' + shareData.solution); process.send({ type: 'block', - share: shareData, + share: data, coin: poolOptions.coin.name }); }