Merge pull request #236 from bluecircle/master

Fix for x11 switch difficulty incorrect
This commit is contained in:
Matthew Little 2014-05-29 12:14:44 -06:00
commit 536f8269e5
2 changed files with 45 additions and 14 deletions

View File

@ -88,7 +88,14 @@
"algorithm": "x11", "algorithm": "x11",
"ports": { "ports": {
"5555": { "5555": {
"diff": 0.001 "diff": 0.001,
"varDiff": {
"minDiff": 0.001,
"maxDiff": 1,
"targetTime": 15,
"retargetTime": 60,
"variancePercent": 30
}
} }
} }
} }

View File

@ -202,6 +202,8 @@ module.exports = function(logger){
logger[severity](logSystem, logComponent, logSubCat, text); logger[severity](logSystem, logComponent, logSubCat, text);
}).on('banIP', function(ip, worker){ }).on('banIP', function(ip, worker){
process.send({type: 'banIP', ip: ip}); process.send({type: 'banIP', ip: ip});
}).on('started', function(){
_this.setDifficultyForProxyPort(pool, poolOptions.coin.name, poolOptions.coin.algorithm);
}); });
pool.start(); pool.start();
@ -259,17 +261,6 @@ module.exports = function(logger){
}; };
Object.keys(pools).forEach(function (coinName) {
var p = pools[coinName];
if (poolConfigs[coinName].coin.algorithm === algorithm) {
for (var port in portalConfig.switching[switchName].ports) {
if (portalConfig.switching[switchName].ports[port].varDiff)
p.setVarDiff(port, portalConfig.switching[switchName].ports[port].varDiff);
}
}
});
Object.keys(proxySwitch[switchName].ports).forEach(function(port){ Object.keys(proxySwitch[switchName].ports).forEach(function(port){
var f = net.createServer(function(socket) { var f = net.createServer(function(socket) {
var currentPool = proxySwitch[switchName].currentPool; var currentPool = proxySwitch[switchName].currentPool;
@ -278,8 +269,11 @@ module.exports = function(logger){
+ switchName + ' from ' + switchName + ' from '
+ socket.remoteAddress + ' on ' + socket.remoteAddress + ' on '
+ port + ' routing to ' + currentPool); + port + ' routing to ' + currentPool);
pools[currentPool].getStratumServer().handleNewClient(socket); if (pools[currentPool])
pools[currentPool].getStratumServer().handleNewClient(socket);
else
pools[initialPool].getStratumServer().handleNewClient(socket);
}).listen(parseInt(port), function() { }).listen(parseInt(port), function() {
logger.debug(logSystem, logComponent, logSubCat, 'Switching "' + switchName logger.debug(logSystem, logComponent, logSubCat, 'Switching "' + switchName
@ -304,4 +298,34 @@ module.exports = function(logger){
}); });
return foundCoin; return foundCoin;
}; };
//
// Called when stratum pool emits its 'started' event to copy the initial diff and vardiff
// configuation for any proxy switching ports configured into the stratum pool object.
//
this.setDifficultyForProxyPort = function(pool, coin, algo) {
logger.debug(logSystem, logComponent, algo, 'Setting proxy difficulties after pool start');
Object.keys(portalConfig.switching).forEach(function(switchName) {
if (!portalConfig.switching[switchName].enabled) return;
var switchAlgo = portalConfig.switching[switchName].algorithm;
if (pool.options.coin.algorithm !== switchAlgo) return;
// we know the switch configuration matches the pool's algo, so setup the diff and
// vardiff for each of the switch's ports
for (var port in portalConfig.switching[switchName].ports) {
if (portalConfig.switching[switchName].ports[port].varDiff)
pool.setVarDiff(port, portalConfig.switching[switchName].ports[port].varDiff);
if (portalConfig.switching[switchName].ports[port].diff){
if (!pool.options.ports.hasOwnProperty(port))
pool.options.ports[port] = {};
pool.options.ports[port].diff = portalConfig.switching[switchName].ports[port].diff;
}
}
});
};
}; };