From 39aae3d4e0126acc8f941a8effd41f1e616bef9c Mon Sep 17 00:00:00 2001 From: Ward Wouts Date: Fri, 15 Oct 2004 13:48:04 +0000 Subject: [PATCH] bugfixes multipart werkte niet meer en hoop debugging meuk --- trunk/ripnews/news/article.rb | 57 +++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 23 deletions(-) diff --git a/trunk/ripnews/news/article.rb b/trunk/ripnews/news/article.rb index 34a2663..ea8ae20 100644 --- a/trunk/ripnews/news/article.rb +++ b/trunk/ripnews/news/article.rb @@ -1,4 +1,4 @@ -# $Dwarf: article.rb,v 1.91 2004/10/14 21:47:06 ward Exp $ +# $Dwarf: article.rb,v 1.92 2004/10/14 21:54:51 ward Exp $ # $Source$ # @@ -125,7 +125,7 @@ end def preselect(subject) @preselectpatterns.collect{|regexp| - if regexp.match(subject) != nil + if subject =~ regexp return true end } @@ -318,6 +318,7 @@ def get_groupname end def get_body(server, message) +p "get_body" timedout = 0 retries = 0 resp = "" @@ -362,6 +363,7 @@ def get_body(server, message) end def get_group_body(subj) +p "get_group_body" result = [] group_subject_sort(subj) # puts @groups[subj].to_yaml @@ -383,7 +385,7 @@ def get_group_body(subj) end if resp == false if Debuglevel > 1 - print "mess-id i: #{@groups[subj]["messages"][i]}\n" + print "mess-id i: #{@groups[subj]["messageinfo"][i][:messid]}\n" # XXX dit moet netter kunnen print "mess-id i+1: #{@groups[subj]["messageinfo"][i+1][:messid]}\n" if @groups[subj]["messageinfo"][i+1] != nil end @@ -404,24 +406,27 @@ def get_group_body(subj) end def get_group_body_first(subj) +p "get_group_body_first" group_subject_sort(subj) i = 0 unless @groups[subj]["messageinfo"] != nil && @groups[subj]["messageinfo"][0][:messid] + p "ieks komt niet door lame check heen" return false end + p "komt wel door lame check heen" while @gotten.has_key?(@groups[subj]["messageinfo"][0][:messid]) == false print "getting article: #{subj}\n" if Debuglevel > 0 - print "full subject: #{@groups[subj]["messageinfo"][0][:subject]}\n" if Debuglevel > 0 - print "message id: #{@groups[subj]["messageinfo"][i][:messid]}\n" if Debuglevel > 1 - print "id: #{@groups[subj]["messageinfo"][i][:id]}\n" if Debuglevel > 1 - print "server: #{@groups[subj]["messageinfo"][0][:server]}\n" if Debuglevel > 0 + print "full subject: #{@groups[subj]['messageinfo'][0][:subject]}\n" if Debuglevel > 0 + print "message id: #{@groups[subj]['messageinfo'][i][:messid]}\n" if Debuglevel > 1 + print "id: #{@groups[subj]['messageinfo'][i][:id]}\n" if Debuglevel > 1 + print "server: #{@groups[subj]['messageinfo'][0][:server]}\n" if Debuglevel > 0 resp = false while resp == false resp, id, messid, list = get_body(@groups[subj]["messageinfo"][i][:server], @groups[subj]["messageinfo"][i][:messid]) if resp == false - print "mess-id i: #{@groups[subj]["messageinfo"][i][:messid]}\n" + print "mess-id i: #{@groups[subj]['messageinfo'][i][:messid]}\n" # XXX dit moet netter kunnen - print "mess-id i+1: #{@groups[subj]["messageinfo"][i+1][:messid]}\n" if @groups[subj]["messageinfo"][i+1] != nil + print "mess-id i+1: #{@groups[subj]['messageinfo'][i+1][:messid]}\n" if @groups[subj]["messageinfo"][i+1] != nil if (i+1 < @groups[subj]["messageinfo"].length) and (@groups[subj]["messageinfo"][i][:messid] == @groups[subj]["messageinfo"][i+1][:messid]) print "Trying next server...\n" @@ -437,18 +442,19 @@ def get_group_body_first(subj) end def get_group_body_rest(subj, file=nil) +p "get_group_body_rest" result = [] for i in (1...@groups[subj]["messageinfo"].length) unless @gotten.has_key?(@groups[subj]["messageinfo"][i][:messid]) print "getting article: #{i}\n" if Debuglevel > 1 print "getting article: #{subj}\n" if Debuglevel > 1 - print "full subject: #{@groups[subj]["messageinfo"][i][:subject]}\n" if Debuglevel > 0 - print "message id: #{@groups[subj]["messageinfo"][i][:messid]}\n" if Debuglevel > 1 - print "id: #{@groups[subj]["messageinfo"][i][:id]}\n" if Debuglevel > 1 - print "server: #{@groups[subj]["messageinfo"][i][:server]}\n" if Debuglevel > 0 + print "full subject: #{@groups[subj]['messageinfo'][i][:subject]}\n" if Debuglevel > 0 + print "message id: #{@groups[subj]['messageinfo'][i][:messid]}\n" if Debuglevel > 1 + print "id: #{@groups[subj]['messageinfo'][i][:id]}\n" if Debuglevel > 1 + print "server: #{@groups[subj]['messageinfo'][i][:server]}\n" if Debuglevel > 0 resp = false while resp == false - resp, id, messid, list = get_body(@groups[subj]["messageinfo"][i][:server], @groups[subj]["messages"][i]) + resp, id, messid, list = get_body(@groups[subj]["messageinfo"][i][:server], @groups[subj]["messageinfo"][i][:messid]) if resp == false print "mess-id i: #{@groups[subj]["messageinfo"][i][:messid]}\n" # print "mess-id i+1: #{@groups[subj]["messageinfo"][i+1][:messid]}\n" @@ -487,6 +493,7 @@ def group_is_complete(subj) @groups[subj]["messageinfo"].each {|x| messids.push(x[:messid]) } +#p "group complete?: #{messids}" umessids = messids.uniq if (umessids.length ) >= @groups[subj]["total"].to_i return true @@ -569,7 +576,9 @@ p Time.now @connections[server]["skip_ids"].elements.collect!{|x| excludes[server][x]=true} if FileTest.directory?( cachedir) and FileTest.file?( "#{filename}.#{server}" ) and FileTest.readable?( "#{filename}.#{server}" ) file = File.new( "#{filename}.#{server}" ) - file.each{|line| + lines = file.readlines + #file.each{|line| + lines.collect{|line| # id | messageid | subject #if line =~ /^(\d+)\|(.*?)\|(.*)$/ if line =~ lineregexp @@ -671,12 +680,14 @@ def group_subject_sort(subj) for i in (0...@serverlist.length) serverhash[@serverlist[i]] = i end + total = @groups[subj]["total"] sort_arr = [] +p "pre sort length: #{@groups[subj]['messageinfo'].length}" for i in (0...@groups[subj]["messageinfo"].length) - print "subj sort #{@groups[subj]["messageinfo"][i][:subject]}\n" if Debuglevel > 2 - print "subj sort #{@groups[subj]["messageinfo"][i][:messid]}\n" if Debuglevel > 2 - print "subj sort #{@groups[subj]["messageinfo"][i][:id]}\n" if Debuglevel > 2 - print "subj sort #{@groups[subj]["messageinfo"][i][:server]}\n" if Debuglevel > 2 + print "subj sort #{@groups[subj]['messageinfo'][i][:subject]}\n" if Debuglevel > 2 + print "subj sort #{@groups[subj]['messageinfo'][i][:messid]}\n" if Debuglevel > 2 + print "subj sort #{@groups[subj]['messageinfo'][i][:id]}\n" if Debuglevel > 2 + print "subj sort #{@groups[subj]['messageinfo'][i][:server]}\n" if Debuglevel > 2 sort_arr.push( @groups[subj]["messageinfo"][i].dup ) if serverhash[@groups[subj]["messageinfo"][i][:server]] != nil @@ -696,12 +707,11 @@ def group_subject_sort(subj) r } - # XXX hmmmm lijkt er op dat @groups[x]["total"] hier wel gesloopt wordt... - # XXX maakt blijkbaar niet uit, maar is niet netjes - @groups[subj].clear + @groups[subj]["total"] = total +p "sort_arr length: #{sort_arr.length}" sort_arr.collect{|i| - if @groups[subj].has_key?("messages") + if @groups[subj].has_key?("messageinfo") @groups[subj]["messageinfo"].push(i) else @groups[subj]["messageinfo"] = [ i ] @@ -709,6 +719,7 @@ def group_subject_sort(subj) print "subject sort: #{i[:subject]}\n" if Debuglevel > 2 print "server: #{i[:server]}\n" if Debuglevel > 2 } +p "post sort length: #{@groups[subj]['messageinfo'].length}" #print "Done sorting\n" end