diff --git a/app/lib/common-libs/constants.ts b/app/lib/common-libs/constants.ts old mode 100644 new mode 100755 index 79fa4a2c130adc8fc67d20eabfe214c067c7ba0b..30d4f4b7dc9a747d06d7157177d22984433d2a6e --- a/app/lib/common-libs/constants.ts +++ b/app/lib/common-libs/constants.ts @@ -302,7 +302,9 @@ export const CommonConstants = { BLOCK_MAX_TX_CHAINING_DEPTH: 5, CONST_BLOCKS_CHUNK: 250, - BLOCKS_IN_MEMORY_MAX: 288 * 60 // 60 days of blocks + BLOCKS_IN_MEMORY_MAX: 288 * 60, // 60 days of blocks + + MAX_AGE_OF_PEER_IN_BLOCKS: 200, // blocks } function exact (regexpContent:string) { diff --git a/app/lib/common-libs/errors.ts b/app/lib/common-libs/errors.ts old mode 100644 new mode 100755 index 74d0c31b354cf251f58d4cc3a6e1285a7b4d42b8..ffaa416c8ce74aeed8426d044402354fdc43f33f --- a/app/lib/common-libs/errors.ts +++ b/app/lib/common-libs/errors.ts @@ -1,5 +1,6 @@ export enum DataErrors { + TOO_OLD_PEER, LOKI_DIVIDEND_GET_WRITTEN_ON_SHOULD_NOT_BE_USED, LOKI_DIVIDEND_REMOVE_BLOCK_SHOULD_NOT_BE_USED, NEGATIVE_BALANCE, diff --git a/app/service/PeeringService.ts b/app/service/PeeringService.ts old mode 100644 new mode 100755 index 8e34626a565889010e5d170bc3e778573fce3e39..41c6660701257fabc01e3c34db4777d3328845df --- a/app/service/PeeringService.ts +++ b/app/service/PeeringService.ts @@ -23,6 +23,8 @@ import {Server} from "../../server" import {GlobalFifoPromise} from "./GlobalFifoPromise" import {DBPeer} from "../lib/db/DBPeer" import {Underscore} from "../lib/common-libs/underscore" +import {CommonConstants} from "../lib/common-libs/constants" +import {DataErrors} from "../lib/common-libs/errors" const util = require('util'); const events = require('events'); @@ -104,6 +106,7 @@ export class PeeringService { } } if (thePeer.block == constants.PEER.SPECIAL_BLOCK) { + thePeer.block = constants.PEER.SPECIAL_BLOCK; thePeer.statusTS = 0; thePeer.status = 'UP'; } else { @@ -115,6 +118,10 @@ export class PeeringService { thePeer.statusTS = 0; thePeer.status = 'UP'; } + const current = await this.dal.getBlockCurrent() + if ((!block && current.number > CommonConstants.MAX_AGE_OF_PEER_IN_BLOCKS) || (block && current.number - block.number > CommonConstants.MAX_AGE_OF_PEER_IN_BLOCKS)) { + throw Error(DataErrors[DataErrors.TOO_OLD_PEER]) + } } sigTime = block ? block.medianTime : 0; thePeer.statusTS = sigTime;