Merge branch 'arionum:master' into master

This commit is contained in:
Ario Sius
2021-08-03 13:40:31 +02:00
committed by GitHub
2 changed files with 20 additions and 21 deletions

View File

@@ -23,6 +23,7 @@ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
OR OTHER DEALINGS IN THE SOFTWARE. OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
const SANITY_LOCK_PATH = __DIR__.'/tmp/sanity-lock';
require_once __DIR__.'/include/init.inc.php'; require_once __DIR__.'/include/init.inc.php';
header('Content-Type: application/json'); header('Content-Type: application/json');
@@ -41,6 +42,12 @@ if ($_POST['coin'] != $_config['coin']) {
$ip = san_ip($_SERVER['REMOTE_ADDR']); $ip = san_ip($_SERVER['REMOTE_ADDR']);
$ip = filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE); $ip = filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE);
// there should not be any local peering attempts
if($_SERVER['REMOTE_ADDR']==$_SERVER['SERVER_ADDR']){
api_err("invalid-ip");
}
// peer with the current node // peer with the current node
if ($q == "peer") { if ($q == "peer") {
// sanitize the hostname // sanitize the hostname
@@ -164,6 +171,14 @@ if ($q == "peer") {
_log('['.$ip."] Block rejected due to sanity sync"); _log('['.$ip."] Block rejected due to sanity sync");
//api_err("sanity-sync"); //api_err("sanity-sync");
} }
$sanity_lock=fopen(SANITY_LOCK_PATH,'w+');
if(!flock($sanity_lock, LOCK_EX | LOCK_NB)){
_log('['.$ip."] Block rejected due to sanity sync");
api_err("sanity-sync");
}
// make sure sanity doesn't start while we add a new block and no other blocks are added at the same time
flock($sanity_lock, LOCK_EX);
$data['id'] = san($data['id']); $data['id'] = san($data['id']);
$current = $block->current(); $current = $block->current();
// block already in the blockchain // block already in the blockchain

View File

@@ -37,29 +37,13 @@ if (php_sapi_name() !== 'cli') {
require_once __DIR__.'/include/init.inc.php'; require_once __DIR__.'/include/init.inc.php';
// make sure there's only a single sanity process running at the same time // make sure there's only a single sanity process running at the same time
if (file_exists(SANITY_LOCK_PATH)) { $sanity_lock=fopen(SANITY_LOCK_PATH,'w+');
$ignore_lock = false; if(!flock($sanity_lock, LOCK_EX | LOCK_NB)){
if ($argv[1] == "force") { die("Sanity lock in place".PHP_EOL);
$res = intval(shell_exec("ps aux|grep sanity.php|grep -v grep|wc -l"));
if ($res == 1) {
$ignore_lock = true;
}
}
$pid_time = filemtime(SANITY_LOCK_PATH);
// If the process died, restart after 60 times the sanity interval
if (time() - $pid_time > ($_config['sanity_interval'] * 60 ?? 900 * 60)) {
@unlink(SANITY_LOCK_PATH);
}
if (!$ignore_lock) {
die("Sanity lock in place".PHP_EOL);
}
} }
// set the new sanity lock // set the new sanity lock
$lock = fopen(SANITY_LOCK_PATH, "w"); flock($sanity_lock, LOCK_EX);
fclose($lock);
$arg = trim($argv[1]); $arg = trim($argv[1]);
$arg2 = trim($argv[2]); $arg2 = trim($argv[2]);
echo "Sleeping for 3 seconds\n"; echo "Sleeping for 3 seconds\n";