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