From 3f4bdd189b3a989919a7b5ddbc467ef26b2cb900 Mon Sep 17 00:00:00 2001 From: Ward Wouts Date: Tue, 6 Aug 2002 16:07:48 +0000 Subject: [PATCH] syntax fixen & speedups for ydecode (i hope) --- trunk/ripnews/news/article.rb | 36 +++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/trunk/ripnews/news/article.rb b/trunk/ripnews/news/article.rb index 0c7ab11..a45badb 100644 --- a/trunk/ripnews/news/article.rb +++ b/trunk/ripnews/news/article.rb @@ -253,9 +253,15 @@ def get_body(server, message) begin resp, id, messid, list = @connections[server]["nntp"].body(message) rescue Net::NNTPReplyError + a = '' + a += $! print "Caught Net::NNTPReplyError reading article #{message} from #{server} (get_body)\n" print "Error: #{$!}\n" - print "Status: #{$?}\n" + if retries == 0 && a =~ /^503/ + reconnect(server) + get_group_info(server) + retry + end return false rescue EOFError print "Caught EOFError reading article #{message} from #{server} (get_body)\n" @@ -291,7 +297,8 @@ def get_group_body(subj) print "message id: #{@groups[subj]["messages"][i]}\n" if Debuglevel > 1 print "id: #{@groups[subj]["ids"][i]}\n" if Debuglevel > 1 print "server: #{@groups[subj]["servers"][i]}\n" if Debuglevel > 0 - begin + resp = false + while resp == false if @serverlist.include?(@groups[subj]["servers"][i]) resp, id, messid, list = get_body(@groups[subj]["servers"][i], @groups[subj]["messages"][i]) else @@ -304,7 +311,6 @@ def get_group_body(subj) (@groups[subj]["messages"][i] == @groups[subj]["messages"][i+1]) print "Trying next server...\n" i += 1 - retry else raise TempError, "Message-id not on another server" end @@ -326,7 +332,8 @@ def get_group_body_first(subj) print "message id: #{@groups[subj]["messages"][i]}\n" if Debuglevel > 1 print "id: #{@groups[subj]["ids"][i]}\n" if Debuglevel > 1 print "server: #{@groups[subj]["servers"][0]}\n" if Debuglevel > 0 - begin + resp = false + while resp == false resp, id, messid, list = get_body(@groups[subj]["servers"][i], @groups[subj]["messages"][i]) if resp == false print "mess-id i: #{@groups[subj]["messages"][i]}\n" @@ -335,7 +342,6 @@ def get_group_body_first(subj) (@groups[subj]["messages"][i] == @groups[subj]["messages"][i+1]) print "Trying next server...\n" i += 1 - retry else raise TempError, "Message-id not on another server" end @@ -356,7 +362,8 @@ def get_group_body_rest(subj, file=nil) print "message id: #{@groups[subj]["messages"][i]}\n" if Debuglevel > 1 print "id: #{@groups[subj]["ids"][i]}\n" if Debuglevel > 1 print "server: #{@groups[subj]["servers"][i]}\n" if Debuglevel > 0 - begin + resp = false + while resp == false resp, id, messid, list = get_body(@groups[subj]["servers"][i], @groups[subj]["messages"][i]) if resp == false print "mess-id i: #{@groups[subj]["messages"][i]}\n" @@ -365,7 +372,6 @@ def get_group_body_rest(subj, file=nil) (@groups[subj]["messages"][i] == @groups[subj]["messages"][i+1]) print "Trying next server...\n" i += 1 - retry else raise TempError, "Message-id not on another server" end @@ -753,7 +759,7 @@ def _ydecode_file(file, outfile) while (! file.eof) print "at #{file.pos} need to go to #{lines}\n" if Debuglevel > 1 line = file.gets - line.chomp! + line.chop! if line =~ /^=yend\s+(.*)\Z/ m = $1 @@ -813,14 +819,20 @@ def _ydecode_file(file, outfile) # end i = 0 - while i < line.length - if line[i] == '=' + ll = line.length + ostr = '' + while i < ll + if line[i] == 0x3d i += 1 line[i] -= 64 end - outfile.putc ymap[line[i]%255] - bytes += 1 + ostr << ((line[i] - 42) % 256) +# outfile.putc((line[i] - 42) % 256) +# ostr << ymap[line[i]%255] + i += 1 end + outfile << ostr + bytes += ostr.length # special = 0 # line.each_byte { |b|