lib/zold/node/front.rb in zold-0.24.4 vs lib/zold/node/front.rb in zold-0.24.5

- old
+ new

@@ -116,18 +116,11 @@ error(400, 'The score is weak') if s.strength < Score::STRENGTH && !settings.opts['ignore-score-weakness'] return if s.value < Front::MIN_SCORE && !settings.opts['ignore-score-weakness'] if settings.address == "#{s.host}:#{s.port}" && !settings.opts['ignore-score-weakness'] error(400, 'Self-requests are prohibited') end - require_relative '../commands/remote' - begin - Remote.new(remotes: settings.remotes, log: settings.log).run( - ['remote', 'add', s.host, s.port.to_s, "--network=#{settings.opts['network']}", '--ignore-if-exists'] - ) - rescue StandardError => e - error(400, e.message) - end + add_new_remote(s) end end end # @todo #357:30min Test that the headers are being set correctly. @@ -540,9 +533,25 @@ ban(id) settings.wallets.acq(id) do |wallet| error(404, "Wallet ##{id} doesn't exist on the node") unless wallet.exists? content_type(type) yield wallet + end + end + + def add_new_remote(score) + all = settings.remotes.all + return if all.count > Remotes::MAX_NODES && all.none? { |r| r[:error] > Remotes::TOLERANCE } + begin + require_relative '../commands/remote' + Remote.new(remotes: settings.remotes, log: settings.log).run( + [ + 'remote', 'add', score.host, score.port.to_s, + "--network=#{settings.opts['network']}", '--ignore-if-exists' + ] + ) + rescue StandardError => e + error(400, e.message) end end end end