bug fix timeouts

This commit is contained in:
Ward Wouts 2002-05-19 15:06:53 +00:00
parent 80ece7e427
commit 1a0f06d86f

View file

@ -71,7 +71,7 @@ end
def get_articles(cachedir=false) def get_articles(cachedir=false)
for server in @connections.keys for server in @connections.keys
first, last = get_group_info(server, @group) first, last = get_group_info(server)
@connections[server]["first"] = first ? first : 0 @connections[server]["first"] = first ? first : 0
@connections[server]["last"] = last ? last : 0 @connections[server]["last"] = last ? last : 0
end end
@ -88,7 +88,7 @@ def get_articles(cachedir=false)
rangelist = rechunk_runlist(range.diff(@connections[server]["skip_ids"]).run_list) rangelist = rechunk_runlist(range.diff(@connections[server]["skip_ids"]).run_list)
print "rangelist: #{rangelist}\n" if Debuglevel >1 print "rangelist: #{rangelist}\n" if Debuglevel >1
print "rangelist: #{rangelist.type.to_s}\n" if Debuglevel >1 print "rangelist: #{rangelist.type.to_s}\n" if Debuglevel >1
print "rangelsit elements: #{range.diff(@connections[server]["skip_ids"]).elements}\n" if Debuglevel >1 print "rangelist elements: #{range.diff(@connections[server]["skip_ids"]).elements}\n" if Debuglevel >1
unless rangelist == nil or rangelist =~ /^$/ unless rangelist == nil or rangelist =~ /^$/
for i in rangelist.split(',') for i in rangelist.split(',')
print "i: #{i}\n" if Debuglevel > 1 print "i: #{i}\n" if Debuglevel > 1
@ -120,7 +120,7 @@ def get_articles(cachedir=false)
save_cache(cachedir) save_cache(cachedir)
end end
def get_group_info(server, group) def get_group_info(server)
timedout = 0 timedout = 0
resp = "" resp = ""
first = "" first = ""
@ -130,11 +130,11 @@ def get_group_info(server, group)
print "Too many timeouts!\n" print "Too many timeouts!\n"
return false return false
end end
timeout(180) do timeout(30) do
begin begin
resp, count, first, last, name = @connections[server]["nntp"].group(group) resp, count, first, last, name = @connections[server]["nntp"].group(@group)
rescue Net::NNTP::RuntimeError rescue Net::NNTP::RuntimeError
print "Couldn't open group: #{group}\n" print "Couldn't open group: #{@group}\n"
return false return false
rescue Errno::EPIPE, Errno::ECONNRESET rescue Errno::EPIPE, Errno::ECONNRESET
print "Caught Errno::EPIPE reading from server #{server}\n" print "Caught Errno::EPIPE reading from server #{server}\n"
@ -173,14 +173,20 @@ def get_xhdr(server, range, header)
rescue Errno::EPIPE, Errno::ECONNRESET rescue Errno::EPIPE, Errno::ECONNRESET
print "Caught Errno::EPIPE reading from server #{server}\n" print "Caught Errno::EPIPE reading from server #{server}\n"
print "Error: #{$!}\n" print "Error: #{$!}\n"
retry if reconnect(server) if reconnect(server)
get_group_info(server)
retry
end
end end
end end
return resp, lines return resp, lines
rescue TimeoutError rescue TimeoutError
print "Time out, reconnecting to server\n" print "Time out, reconnecting to server\n"
timedout += 1 timedout += 1
retry if reconnect(server) if reconnect(server)
get_group_info(server)
retry
end
end end
end end
@ -234,15 +240,20 @@ def get_body(server, message)
rescue Errno::EPIPE, Errno::ECONNRESET rescue Errno::EPIPE, Errno::ECONNRESET
print "Caught Errno::EPIPE reading from server #{server}\n" print "Caught Errno::EPIPE reading from server #{server}\n"
print "Error: #{$!}\n" print "Error: #{$!}\n"
reconnect(server) if reconnect(server)
retry get_group_info(server)
retry
end
end end
end end
return resp, id, messid, list return resp, id, messid, list
rescue TimeoutError rescue TimeoutError
print "Time out, reconnecting to server\n" print "Time out, reconnecting to server\n"
timedout += 1 timedout += 1
retry if reconnect(server) if reconnect(server)
get_group_info(server)
retry
end
end end
end end