be more critical of yEnc part order
don't loop while timeing out
This commit is contained in:
parent
bbd558eeaa
commit
570becff4c
1 changed files with 26 additions and 11 deletions
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue