lib/ftw/agent.rb in ftw-0.0.33 vs lib/ftw/agent.rb in ftw-0.0.34
- old
+ new
@@ -300,16 +300,25 @@
# @param [FTW::Request]
# @return [FTW::Response] the response for this request.
def execute(request)
# TODO(sissel): Make redirection-following optional, but default.
- connection, error = connect(request.headers["Host"], request.port,
- request.protocol == "https")
- if !error.nil?
- p :error => error
- raise error
+ tries = 3
+ begin
+ connection, error = connect(request.headers["Host"], request.port,
+ request.protocol == "https")
+ if !error.nil?
+ p :error => error
+ raise error
+ end
+ response = request.execute(connection)
+ rescue EOFError => e
+ tries -= 1
+ @logger.warn("Error while sending request, will retry.",
+ :tries_left => tries,
+ :exception => e)
+ retry if tries > 0
end
- response = request.execute(connection)
redirects = 0
# Follow redirects
while response.redirect? and response.headers.include?("Location")
# RFC2616 section 10.3.3 indicates HEAD redirects must not include a