betere error handling?
This commit is contained in:
parent
baddd9c76a
commit
2229b3fb32
1 changed files with 36 additions and 4 deletions
|
|
@ -35,6 +35,11 @@ def initialize(nntpservers, groupname, newsrc="~/.newsrc")
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def reconnect(server)
|
||||||
|
print "Trying to reconnect to #{server}...\n"
|
||||||
|
@connections[server]["nntp"] = Net::NNTP.new(server)
|
||||||
|
end
|
||||||
|
|
||||||
def add(messid, id, server, subject)
|
def add(messid, id, server, subject)
|
||||||
# print "Messid: #{messid}\n"
|
# print "Messid: #{messid}\n"
|
||||||
# print "Id: #{id}\n"
|
# print "Id: #{id}\n"
|
||||||
|
|
@ -150,12 +155,22 @@ def get_group_body(subj)
|
||||||
resp, id, messid, list = @connections[@groups[subj]["servers"][i]]["nntp"].body(@groups[subj]["messages"][i])
|
resp, id, messid, list = @connections[@groups[subj]["servers"][i]]["nntp"].body(@groups[subj]["messages"][i])
|
||||||
rescue Net::NNTPReplyError
|
rescue Net::NNTPReplyError
|
||||||
print "Caught Net::NNTPReplyError in get_group_body reading article #{@groups[subj]["messages"][0]}\n"
|
print "Caught Net::NNTPReplyError in get_group_body reading article #{@groups[subj]["messages"][0]}\n"
|
||||||
|
print "mess-id i: #{@groups[subj]["messages"][i]}\n"
|
||||||
|
print "mess-id i+1: #{@groups[subj]["messages"][i+1]}\n"
|
||||||
if (i+1 < @groups[subj]["messages"].length) and
|
if (i+1 < @groups[subj]["messages"].length) and
|
||||||
(@groups[subj]["messages"][i] == @groups[subj]["messages"][i+1])
|
(@groups[subj]["messages"][i] == @groups[subj]["messages"][i+1])
|
||||||
print "Trying next server\n"
|
print "Trying next server\n"
|
||||||
next
|
i += 1
|
||||||
|
retry
|
||||||
|
else print "message-id not on another server :(\n"
|
||||||
|
return false
|
||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
|
rescue Errno::EPIPE, Errno::ECONNRESET
|
||||||
|
print "Caught Errno::EPIPE reading from server #{@groups[subj]["servers"][i]}\n"
|
||||||
|
print "Error: #{$!}\n"
|
||||||
|
reconnect(@groups[subj]["servers"][i])
|
||||||
|
retry
|
||||||
end
|
end
|
||||||
@gotten[ @groups[subj]["messages"][i] ] = true
|
@gotten[ @groups[subj]["messages"][i] ] = true
|
||||||
result = list
|
result = list
|
||||||
|
|
@ -179,11 +194,16 @@ def get_group_body_first(subj)
|
||||||
print "Caught Net::NNTPReplyError in get_group_body_first reading article #{@groups[subj]["messages"][0]}\n"
|
print "Caught Net::NNTPReplyError in get_group_body_first reading article #{@groups[subj]["messages"][0]}\n"
|
||||||
if (i+1 < @groups[subj]["messages"].length) and
|
if (i+1 < @groups[subj]["messages"].length) and
|
||||||
(@groups[subj]["messages"][i] == @groups[subj]["messages"][i+1])
|
(@groups[subj]["messages"][i] == @groups[subj]["messages"][i+1])
|
||||||
print "Trying next server\n"
|
print "Trying next server...\n"
|
||||||
i += 1
|
i += 1
|
||||||
next
|
next
|
||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
|
rescue Errno::EPIPE, Errno::ECONNRESET
|
||||||
|
print "Caught Errno::EPIPE reading from server #{@groups[subj]["servers"][i]}\n"
|
||||||
|
print "Error: #{$!}\n"
|
||||||
|
reconnect(@groups[subj]["servers"][i])
|
||||||
|
retry
|
||||||
end
|
end
|
||||||
@gotten[@groups[subj]["messages"][i]] = true
|
@gotten[@groups[subj]["messages"][i]] = true
|
||||||
end
|
end
|
||||||
|
|
@ -207,12 +227,24 @@ def get_group_body_rest(subj, file=nil)
|
||||||
end
|
end
|
||||||
rescue Net::NNTPReplyError
|
rescue Net::NNTPReplyError
|
||||||
print "Caught Net::NNTPReplyError in get_group_body_rest reading article #{@groups[subj]["messages"][0]}\n"
|
print "Caught Net::NNTPReplyError in get_group_body_rest reading article #{@groups[subj]["messages"][0]}\n"
|
||||||
|
print "Error: #{$!}\n"
|
||||||
|
print "mess-id i: #{@groups[subj]["messages"][i]}\n"
|
||||||
|
print "mess-id i+1: #{@groups[subj]["messages"][i+1]}\n"
|
||||||
if (i+1 < @groups[subj]["messages"].length) and
|
if (i+1 < @groups[subj]["messages"].length) and
|
||||||
(@groups[subj]["messages"][i] == @groups[subj]["messages"][i+1])
|
(@groups[subj]["messages"][i] == @groups[subj]["messages"][i+1])
|
||||||
print "Trying next server\n"
|
print "Trying next server...\n"
|
||||||
next
|
i += 1
|
||||||
|
retry
|
||||||
|
else
|
||||||
|
print "Message-id not on another server :( Skipping...\n"
|
||||||
|
return false
|
||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
|
rescue Errno::EPIPE, Errno::ECONNRESET
|
||||||
|
print "Caught Errno::EPIPE reading from server #{@groups[subj]["servers"][i]}\n"
|
||||||
|
print "Error: #{$!}\n"
|
||||||
|
reconnect(@groups[subj]["servers"][i])
|
||||||
|
retry
|
||||||
end
|
end
|
||||||
@gotten[ @groups[subj]["messages"][i] ] = true
|
@gotten[ @groups[subj]["messages"][i] ] = true
|
||||||
if file
|
if file
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue