=== modified file 'Mailman/Queue/Runner.py'
--- Mailman/Queue/Runner.py     2007-05-08 03:16:04 +0000
+++ Mailman/Queue/Runner.py     2008-04-22 02:02:38 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 1998-2007 by the Free Software Foundation, Inc.
+# Copyright (C) 1998-2008 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
@@ -103,12 +103,18 @@
                # but other problems can occur in message parsing, e.g.
                # ValueError, and exceptions can occur in unpickling too.
                # We don't want the runner to die, so we just log and skip
-                # this entry, but preserve it for analysis.
+                # this entry, but maybe preserve it for analysis.
                self._log(e)
-                syslog('error',
-                       'Skipping and preserving unparseable message: %s',
-                       filebase)
-                self._switchboard.finish(filebase, preserve=True)
+                if mm_cfg.QRUNNER_SAVE_BAD_MESSAGES:
+                    syslog('error',
+                           'Skipping and preserving unparseable message: %s',
+                           filebase)
+                    preserve=True
+                else:
+                    syslog('error',
+                           'Ignoring unparseable message: %s', filebase)
+                    preserve=False
+                self._switchboard.finish(filebase, preserve=preserve)
                continue
            try:
                self._onefile(msg, msgdata)

=== modified file 'Mailman/Queue/Switchboard.py'
--- Mailman/Queue/Switchboard.py        2008-02-14 16:53:52 +0000
+++ Mailman/Queue/Switchboard.py        2008-04-22 02:11:19 +0000
@@ -169,13 +169,13 @@
        bakfile = os.path.join(self.__whichq, filebase + '.bak')
        try:
            if preserve:
-                psvfile = os.path.join(mm_cfg.SHUNTQUEUE_DIR, filebase + '.psv')
+                psvfile = os.path.join(mm_cfg.BADQUEUE_DIR, filebase + '.psv')
                # Create the directory if it doesn't yet exist.
                # Copied from __init__.
                omask = os.umask(0)                       # rwxrws---
                try:
                    try:
-                        os.mkdir(mm_cfg.SHUNTQUEUE_DIR, 0770)
+                        os.mkdir(mm_cfg.BADQUEUE_DIR, 0770)
                    except OSError, e:
                        if e.errno <> errno.EEXIST: raise
                finally:

=== modified file 'Mailman/Commands/cmd_subscribe.py'
--- Mailman/Commands/cmd_subscribe.py   2008-03-20 03:07:51 +0000
+++ Mailman/Commands/cmd_subscribe.py   2008-04-23 14:32:48 +0000
@@ -71,7 +71,8 @@
            return STOP
        argnum += 1
    # Fix the password/digest issue
-    if digest is None and password.lower() in ('digest', 'nodigest'):
+    if (digest is None
+            and password and password.lower() in ('digest', 'nodigest')):
        if password.lower() == 'digest':
            digest = 1
        else: