Since gmane generates broken headers (albeit not RFC invalid) such as
authorMatthew Mondor <mmondor@pulsar-zone.net>
Fri, 4 Jun 2010 17:38:50 +0000 (17:38 +0000)
committerMatthew Mondor <mmondor@pulsar-zone.net>
Fri, 4 Jun 2010 17:38:50 +0000 (17:38 +0000)
exposing a connect(2) error message as part of the headers, and that a
message sent upstream about this long ago seemed to have been ignored,
also accept '(' and ')' as part of a header field name to avoid the
annoyance.

mmsoftware/mmmail/src/mmsmtpd/mmsmtpd.c

index e280161..1805f71 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mmsmtpd.c,v 1.109 2010/05/05 02:31:06 mmondor Exp $ */
+/* $Id: mmsmtpd.c,v 1.110 2010/06/04 17:38:50 mmondor Exp $ */
 
 /*
  * Copyright (C) 2001-2008, Matthew Mondor
@@ -86,7 +86,7 @@
 
 MMCOPYRIGHT("@(#) Copyright (c) 2001-2007\n\
 \tMatthew Mondor. All rights reserved.\n");
-MMRCSID("$Id: mmsmtpd.c,v 1.109 2010/05/05 02:31:06 mmondor Exp $");
+MMRCSID("$Id: mmsmtpd.c,v 1.110 2010/06/04 17:38:50 mmondor Exp $");
 
 
 
@@ -1651,7 +1651,8 @@ validate_msg_line(char *line, ssize_t *len, int *res, void *udata)
            for (ptr = line, hptr = header;
                    *ptr != '\0' &&
                    (isalnum((int)*ptr) || *ptr == '-' || *ptr == '.' ||
-                    *ptr == '_') && hptr < ehptr;
+                    *ptr == '_' || *ptr == '(' || *ptr == ')') &&
+                   hptr < ehptr;
                    *hptr++ = *ptr++) ;
            if (*ptr++ != ':')
                goto endheader;