Skip to content

Commit 8053c60

Browse files
handle timeouts
1 parent 14cd4d7 commit 8053c60

2 files changed

Lines changed: 10 additions & 1 deletion

File tree

‎lib/code.rb‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ def initialize(
2424

2525
def self.parse(source, timeout: DEFAULT_TIMEOUT)
2626
Timeout.timeout(timeout) { Parser.parse(source).to_raw }
27+
rescue Timeout::Error
28+
raise(Error.new("timeout"))
2729
end
2830

2931
def self.evaluate(...)
@@ -42,6 +44,8 @@ def evaluate
4244
timeout: timeout
4345
)
4446
end
47+
rescue Timeout::Error
48+
raise(Error.new("timeout"))
4549
end
4650

4751
private

‎lib/code/object/http.rb‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,12 @@ def self.code_fetch(*arguments, redirects: 10)
199199
headers.each { |key, value| request[key.to_s] = value.to_s }
200200
request.body = body if body.present?
201201
request.set_form_data(**data.as_json) if data.present?
202-
response = http.request(request)
202+
203+
begin
204+
response = http.request(request)
205+
rescue ::Timeout::Error, ::Net::OpenTimeout, ::Net::ReadTimeout, ::Errno::ETIMEDOUT
206+
raise(::Code::Error.new("timeout"))
207+
end
203208

204209
code = response.code.to_i
205210
location = response["location"].to_s

0 commit comments

Comments
 (0)