be more critical of yEnc part order

don't loop while timeing out
This commit is contained in:
Ward Wouts 2002-06-28 21:21:47 +00:00
parent bbd558eeaa
commit 570becff4c

View file

@ -1,7 +1,13 @@
#!/usr/local/bin/ruby
#################################
#
# $Id$
# $Source$
#
# article.rb
#
# (C) 2002, Ward Wouts
#
#################################
require 'set/intspan'
require 'net/nntp'
@ -72,6 +78,7 @@ end
def get_articles(cachedir=false)
for server in @connections.keys
first, last = get_group_info(server)
return false if first == false
if first
@connections[server]["first"] = first ? first : 0
@connections[server]["last"] = last ? last : 0
@ -85,7 +92,7 @@ def get_articles(cachedir=false)
for server in @connections.keys
print " reading articles from server: #{server}\n"
if @connections[server]["first"] > @connections[server]["last"]
print " First article has higher number that last article on server #{server}.\n"
print " First article has higher number than last article on server #{server}.\n"
print " Skipping...\n"
next
else
@ -133,7 +140,7 @@ def get_group_info(server)
last = ""
begin
if timedout > 1
print "Too many timeouts!\n"
print "Too many timeouts! (get_group_info)\n"
return false
end
timeout(30) do
@ -164,7 +171,7 @@ def get_xhdr(server, range, header)
lines = []
begin
if timedout > 1
print "Too many timeouts!\n"
print "Too many timeouts! (get_xhdr)\n"
return false
end
timeout(180) do
@ -181,7 +188,7 @@ def get_xhdr(server, range, header)
print "Caught Errno::EPIPE reading from server #{server}\n"
print "Error: #{$!}\n"
if reconnect(server)
get_group_info(server)
return false unless get_group_info(server)
retry
end
end
@ -191,7 +198,7 @@ def get_xhdr(server, range, header)
print "Time out, reconnecting to server\n"
timedout += 1
if reconnect(server)
get_group_info(server)
return false unless get_group_info(server)
retry
end
end
@ -234,7 +241,7 @@ def get_body(server, message)
list = []
begin
if timedout > 1
print "Too many timeouts!\n"
print "Too many timeouts! (get_body)\n"
return false
end
timeout(180) do
@ -248,7 +255,7 @@ def get_body(server, message)
print "Caught Errno::EPIPE reading from server #{server}\n"
print "Error: #{$!}\n"
if reconnect(server)
get_group_info(server)
return false unless get_group_info(server)
retry
end
end
@ -258,7 +265,7 @@ def get_body(server, message)
print "Time out, reconnecting to server\n"
timedout += 1
if reconnect(server)
get_group_info(server)
return false unless get_group_info(server)
retry
end
end
@ -691,6 +698,7 @@ def _ydecode_file(file, outfile)
file.pos = 0
bytes = 0
total = 0
oldpartend = 0
while (! file.eof)
line = file.gets
@ -773,7 +781,14 @@ def _ydecode_file(file, outfile)
if line =~ /^=ypart\s+(\s*begin=(\d+))(\s+end=(\d+))/
b = $2
e = $4
print "next part begin #{b}, end #{e}\n"
print " next part begin #{b}, end #{e}\n"
if b.to_i == oldpartend + 1
oldpartend = e.to_i
else
print "Parts not continuous! last end #{oldpartend}, begin #{b}\n"
print "Bailing out...\n"
return false
end
next
end