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$
|
# $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
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue