From d95961b47030a7d75ebccb3738bbb0d7303958a5 Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Sat, 16 Nov 2013 20:39:41 +0100 Subject: [PATCH] [FIX] Coins without nethashrate in getmininginfo Fixes issues with coins that did not implement a proper array index into their `getmininginfo` output. Currently supported keys are * networkhashps * hashespersec * netmhashps If none of there are found or `getmininginfo` fails itself, we now default to `0` to ensure the webfrontend still works. Fixes #847 and also fixes #834 which has not reported back the required information. --- .../include/classes/bitcoinwrapper.class.php | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/public/include/classes/bitcoinwrapper.class.php b/public/include/classes/bitcoinwrapper.class.php index 6881babc..2ce5056b 100644 --- a/public/include/classes/bitcoinwrapper.class.php +++ b/public/include/classes/bitcoinwrapper.class.php @@ -48,15 +48,21 @@ class BitcoinWrapper extends BitcoinClient { if ($data = $this->memcache->get(__FUNCTION__)) return $data; try { $dNetworkHashrate = $this->query('getmininginfo'); - if (is_array($dNetworkHashrate) && array_key_exists('networkhashps', $dNetworkHashrate)) { - $dNetworkHashrate = $dNetworkHashrate['networkhashps']; - } else if (is_array($dNetworkHashrate) && array_key_exists('hashespersec', $dNetworkHashrate)) { - $dNetworkHashrate = $dNetworkHashrate['hashespersec']; - } else if (is_array($dNetworkHashrate) && array_key_exists('netmhashps', $dNetworkHashrate)) { - $dNetworkHashrate = $dNetworkHashrate['netmhashps'] * 1000 * 1000; + if (is_array($dNetworkHashrate)) { + if (array_key_exists('networkhashps', $dNetworkHashrate)) { + $dNetworkHashrate = $dNetworkHashrate['networkhashps']; + } else if (array_key_exists('hashespersec', $dNetworkHashrate)) { + $dNetworkHashrate = $dNetworkHashrate['hashespersec']; + } else if (array_key_exists('netmhashps', $dNetworkHashrate)) { + $dNetworkHashrate = $dNetworkHashrate['netmhashps'] * 1000 * 1000; + } else { + // Unsupported implementation + $dNetworkHashrate = 0; + } } } catch (Exception $e) { - return false; + // getmininginfo does not exist, cache for an hour + return $this->memcache->setCache(__FUNCTION__, 0, 3600); } return $this->memcache->setCache(__FUNCTION__, $dNetworkHashrate, 30); }