------------------------------------------------------------
revno: 1328
committer: Mark Sapiro <msap...@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-coders/mailman/2.1/+edit-subscription
=== 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/archive%40jab.org

Reply via email to