diff --git a/trunk/ripnews/news/article.rb b/trunk/ripnews/news/article.rb index 2801faf..985a5db 100644 --- a/trunk/ripnews/news/article.rb +++ b/trunk/ripnews/news/article.rb @@ -1,4 +1,4 @@ -# $Dwarf: article.rb,v 1.74 2003/07/14 22:12:18 ward Exp $ +# $Dwarf: article.rb,v 1.75 2003/07/20 20:32:01 ward Exp $ # $Source$ # @@ -141,7 +141,7 @@ def get_articles(cachedir=false) resp, subj_lines = get_xhdr(server, i, "subject") resp, messid_lines = get_xhdr(server, i, "message-id") rescue TempError - print "Caught: #{$!} reading from #{server} (get_articles)\n" + printerr(server) next end @@ -188,11 +188,15 @@ def get_group_info(server) begin resp, count, first, last, name = @connections[server]["nntp"].group(@group) rescue Net::NNTP::RuntimeError - print "Caught #{$!.type} from #{server}\n" - raise PermError, "#{$!}" + printerr(server) + if ( $!.to_s =~ /^503|^400/ ) + reconnect(server) + retry + else + raise PermError, "#{$!}" + end rescue Errno::EPIPE, Errno::ECONNRESET, EOFError - print "Caught #{$!.type} reading from server #{server} (get_group_info)\n" - print "Error: #{$!}\n" + printerr(server) reconnect(server) retry end @@ -225,8 +229,7 @@ def get_xhdr(server, range, header) raise TempError end rescue Net::NNTP::RuntimeError - print "Caught #{$!.type} reading from server #{server} (get_xhdr)\n" - print "Error: #{$!}\n" + printerr(server) if ( $!.to_s =~ /^503|^400/ ) reconnect(server) get_group_info(server) @@ -235,8 +238,7 @@ def get_xhdr(server, range, header) print "Won't handle this... yet :(\n" end rescue Errno::EPIPE, Errno::ECONNRESET, EOFError - print "Caught #{$!.type} reading from server #{server} (get_xhdr)\n" - print "Error: #{$!}\n" + printerr(server) reconnect(server) get_group_info(server) retry @@ -296,8 +298,7 @@ def get_body(server, message) rescue Net::NNTPReplyError a = '' a += $! - print "Caught #{$!.type} reading article #{message} from #{server} (get_body)\n" - print "Error: #{$!}\n" + printerr(server) if retries == 0 && (a =~ /^503/ || a =~ /^400/) reconnect(server) get_group_info(server) @@ -306,12 +307,10 @@ def get_body(server, message) end return false rescue EOFError, NameError - print "Caught #{$!.type} reading article #{message} from #{server} (get_body)\n" - print "Error: #{$!}\n" + printerr(server) return false rescue Errno::EPIPE, Errno::ECONNRESET - print "Caught #{$!.type} reading from server #{server} (get_body)\n" - print "Error: #{$!}\n" + printerr(server) reconnect(server) get_group_info(server) retry @@ -694,6 +693,11 @@ def rechunk_runlist(runlist) return blup end +def printerr(server) + print "Caught #{$!.type} reading from server #{server} (#{caller[0]})\n" + print "Error: #{$!}\n" +end + def quit for server in @connections.keys begin