lib/libis/services/soap_client.rb in libis-services-0.1.7 vs lib/libis/services/soap_client.rb in libis-services-0.1.9
- old
+ new
@@ -35,9 +35,18 @@
end
end
return yield(response) if block_given?
parse_result(response, parse_options)
+
+ rescue IOError, EOFError, Errno::ECONNRESET, Errno::ECONNABORTED, Errno::EPIPE => e
+ debug "Exception: #{e.class.name} '#{e.message}'"
+ unless (tries ||= 0) > 2; sleep(5 ** tries); tries += 1; retry; end
+ raise Libis::Services::ServiceError, "Persistent network error: #{e.class.name} '#{e.message}'"
+ rescue Net::ReadTimeout, Timeout::Error => e
+ debug "Exception: #{e.class.name} '#{e.message}'"
+ unless (tries ||= 0) > 1; sleep(5 ** tries); tries += 1; retry; end
+ raise Libis::Services::ServiceError, "Network timeout error: #{e.class.name} '#{e.message}'"
end
protected
def parse_result(response, options = {})