* Reduce connect timeout from 10s to 1s
* Limit failing signature verifications per source IP
return
end
- account = account_from_key_id(signature_params['keyId'])
+ account_stoplight = Stoplight("source:#{request.ip}") { account_from_key_id(signature_params['keyId']) }
+ .with_fallback { nil }
+ .with_threshold(1)
+ .with_cool_off_time(5.minutes.seconds)
+
+ account = account_stoplight.run
if account.nil?
@signature_verification_failure_reason = "Public key not found for key #{signature_params['keyId']}"
end
def timeout
- { write: 10, connect: 10, read: 10 }
+ { connect: 1, read: 10, write: 10 }
end
def http_client