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