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 = {})