[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mailman-cvs
Subject:    [Mailman-checkins] [Branch ~mailman-coders/mailman/2.1] Rev 1328:
From:       noreply () launchpad ! net
Date:       2011-11-17 21:05:20
Message-ID: 20111117210520.19486.36777.launchpad () ackee ! canonical ! com
[Download RAW message or body]

------------------------------------------------------------
revno: 1328
committer: Mark Sapiro <msapiro@value.net>
branch nick: 2.1
timestamp: Thu 2011-11-17 12:55:13 -0800
message:
  Fixed a problem where topics regexps would not match RFC 2047 encoded
  Keywords: and/or Subject: headers.  Bug #891676.
modified:
  Mailman/Handlers/Tagger.py
  NEWS


--
lp:mailman/2.1
https://code.launchpad.net/~mailman-coders/mailman/2.1

Your team Mailman Checkins is subscribed to branch lp:mailman/2.1.
To unsubscribe from this branch go to https://code.launchpad.net/~mailman-c=
oders/mailman/2.1/+edit-subscription

["revision-diff.txt" (revision-diff.txt)]

=== modified file 'Mailman/Handlers/Tagger.py'
--- Mailman/Handlers/Tagger.py	2008-12-01 04:30:43 +0000
+++ Mailman/Handlers/Tagger.py	2011-11-17 20:55:13 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2008 by the Free Software Foundation, Inc.
+# Copyright (C) 2001-2011 by the Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -23,6 +23,9 @@
 import email.Iterators
 import email.Parser
 
+from email.Header import decode_header
+
+from Mailman import Utils
 from Mailman.Logging.Syslog import syslog
 
 CRNL = '\r\n'
@@ -34,10 +37,16 @@
 def process(mlist, msg, msgdata):
     if not mlist.topics_enabled:
         return
+    # Helper function.  Return RFC 2047 decoded header as a string in the
+    # charset of the list's preferred language.
+    def _decode(h):
+        if not h:
+            return h
+        return Utils.oneline(h, Utils.GetCharSet(mlist.preferred_language))
     # Extract the Subject:, Keywords:, and possibly body text
     matchlines = []
-    matchlines.append(msg.get('subject', None))
-    matchlines.append(msg.get('keywords', None))
+    matchlines.append(_decode(msg.get('subject', None)))
+    matchlines.append(_decode(msg.get('keywords', None)))
     if mlist.topics_bodylines_limit == 0:
         # Don't scan any body lines
         pass
@@ -84,7 +93,7 @@
     # the first numlines of body text.
     lines = []
     lineno = 0
-    reader = list(email.Iterators.body_line_iterator(msg))
+    reader = list(email.Iterators.body_line_iterator(msg, decode=True))
     while numlines is None or lineno < numlines:
         try:
             line = reader.pop(0)

=== modified file 'NEWS'
--- NEWS	2011-11-14 00:47:19 +0000
+++ NEWS	2011-11-17 20:55:13 +0000
@@ -71,6 +71,9 @@
 
   Bug Fixes and other patches
 
+    - Fixed a problem where topics regexps would not match RFC 2047 encoded
+      Keywords: and/or Subject: headers.  Bug #891676.
+
     - Fixed misleading response to an email approval of a held message.
       Bug #889968.
 



_______________________________________________
Mailman-checkins mailing list
Mailman-checkins@python.org
Unsubscribe: http://mail.python.org/mailman/options/mailman-checkins/mailman-cvs%40progressive-comp.com



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic