Author: bapt
Date: Sat Oct 10 23:22:05 2015
New Revision: 289121
URL: https://svnweb.freebsd.org/changeset/base/289121

Log:
  Import dma 0.10

Deleted:
  vendor/dma/dist/BSDmakefile
  vendor/dma/dist/debian/
Modified:
  vendor/dma/dist/LICENSE
  vendor/dma/dist/README.markdown
  vendor/dma/dist/TODO
  vendor/dma/dist/VERSION
  vendor/dma/dist/aliases_parse.y
  vendor/dma/dist/aliases_scan.l
  vendor/dma/dist/conf.c
  vendor/dma/dist/dma-mbox-create.c
  vendor/dma/dist/dma.8
  vendor/dma/dist/dma.c
  vendor/dma/dist/dma.h
  vendor/dma/dist/dns.c
  vendor/dma/dist/get-version.sh
  vendor/dma/dist/local.c
  vendor/dma/dist/mail.c
  vendor/dma/dist/net.c
  vendor/dma/dist/spool.c
  vendor/dma/dist/util.c

Modified: vendor/dma/dist/LICENSE
==============================================================================
--- vendor/dma/dist/LICENSE     Sat Oct 10 23:16:40 2015        (r289120)
+++ vendor/dma/dist/LICENSE     Sat Oct 10 23:22:05 2015        (r289121)
@@ -1,5 +1,5 @@
+Copyright (c) 2008-2014, Simon Schubert <2...@0x2c.org>.
 Copyright (c) 2008 The DragonFly Project.
-Copyright (c) 2008-2011, Simon Schubert <2...@0x2c.org>.
 All rights reserved.
 
 This code is derived from software contributed to The DragonFly Project
@@ -37,7 +37,7 @@ OF THE USE OF THIS SOFTWARE, EVEN IF ADV
 SUCH DAMAGE.
 
 
-Copyright (c) 1995-2001 Kungliga Tekniska H�gskolan
+Copyright (c) 1995-2001 Kungliga Tekniska Högskolan
 (Royal Institute of Technology, Stockholm, Sweden).
 All rights reserved.
 

Modified: vendor/dma/dist/README.markdown
==============================================================================
--- vendor/dma/dist/README.markdown     Sat Oct 10 23:16:40 2015        
(r289120)
+++ vendor/dma/dist/README.markdown     Sat Oct 10 23:22:05 2015        
(r289121)
@@ -15,8 +15,13 @@ incoming connections.
 Building
 --------
 
+In Linux:
+
        make
 
+In BSD:
+
+       cd bsd && make
 
 Installation
 ------------

Modified: vendor/dma/dist/TODO
==============================================================================
--- vendor/dma/dist/TODO        Sat Oct 10 23:16:40 2015        (r289120)
+++ vendor/dma/dist/TODO        Sat Oct 10 23:22:05 2015        (r289121)
@@ -1,5 +1,4 @@
 - unquote/handle quoted local recipients
-- use proper sysexit codes
 - handle/use ESMTP extensions
 - .forward support
 - suggest way to run a queue flush on boot

Modified: vendor/dma/dist/VERSION
==============================================================================
--- vendor/dma/dist/VERSION     Sat Oct 10 23:16:40 2015        (r289120)
+++ vendor/dma/dist/VERSION     Sat Oct 10 23:22:05 2015        (r289121)
@@ -1 +1 @@
-v0.9
+v0.10

Modified: vendor/dma/dist/aliases_parse.y
==============================================================================
--- vendor/dma/dist/aliases_parse.y     Sat Oct 10 23:16:40 2015        
(r289120)
+++ vendor/dma/dist/aliases_parse.y     Sat Oct 10 23:22:05 2015        
(r289121)
@@ -7,8 +7,6 @@
 
 extern int yylineno;
 static void yyerror(const char *);
-int yywrap(void);
-int yylex(void);
 
 static void
 yyerror(const char *msg)

Modified: vendor/dma/dist/aliases_scan.l
==============================================================================
--- vendor/dma/dist/aliases_scan.l      Sat Oct 10 23:16:40 2015        
(r289120)
+++ vendor/dma/dist/aliases_scan.l      Sat Oct 10 23:22:05 2015        
(r289121)
@@ -1,11 +1,11 @@
 %{
 
 #include <string.h>
+#include "dma.h"
 #include "aliases_parse.h"
 
 #define YY_NO_INPUT
 
-int yylex(void);
 %}
 
 %option yylineno

Modified: vendor/dma/dist/conf.c
==============================================================================
--- vendor/dma/dist/conf.c      Sat Oct 10 23:16:40 2015        (r289120)
+++ vendor/dma/dist/conf.c      Sat Oct 10 23:22:05 2015        (r289121)
@@ -64,7 +64,7 @@ trim_line(char *line)
        if (line[0] == '.') {
                if ((linelen + 2) > 1000) {
                        syslog(LOG_CRIT, "Cannot escape leading dot.  Buffer 
overflow");
-                       exit(1);
+                       exit(EX_DATAERR);
                }
                memmove((line + 1), line, (linelen + 1));
                line[0] = '.';
@@ -101,7 +101,7 @@ parse_authfile(const char *path)
 
        a = fopen(path, "r");
        if (a == NULL) {
-               errlog(1, "can not open auth file `%s'", path);
+               errlog(EX_NOINPUT, "can not open auth file `%s'", path);
                /* NOTREACHED */
        }
 
@@ -121,7 +121,7 @@ parse_authfile(const char *path)
 
                au = calloc(1, sizeof(*au));
                if (au == NULL)
-                       errlog(1, NULL);
+                       errlog(EX_OSERR, NULL);
 
                data = strdup(line);
                au->login = strsep(&data, "|");
@@ -131,8 +131,7 @@ parse_authfile(const char *path)
                if (au->login == NULL ||
                    au->host == NULL ||
                    au->password == NULL) {
-                       errlogx(1, "syntax error in authfile %s:%d",
-                               path, lineno);
+                       errlogx(EX_CONFIG, "syntax error in authfile %s:%d", 
path, lineno);
                        /* NOTREACHED */
                }
 
@@ -160,7 +159,7 @@ parse_conf(const char *config_path)
                /* Don't treat a non-existing config file as error */
                if (errno == ENOENT)
                        return;
-               errlog(1, "can not open config `%s'", config_path);
+               errlog(EX_NOINPUT, "can not open config `%s'", config_path);
                /* NOTREACHED */
        }
 
@@ -211,7 +210,7 @@ parse_conf(const char *config_path)
                        } else {
                                host = data;
                        }
-                       if (host && *host == 0)
+                       if (host && *host == 0)
                                host = NULL;
                         if (user && *user == 0)
                                 user = NULL;
@@ -232,13 +231,13 @@ parse_conf(const char *config_path)
                else if (strcmp(word, "NULLCLIENT") == 0 && data == NULL)
                        config.features |= NULLCLIENT;
                else {
-                       errlogx(1, "syntax error in %s:%d", config_path, 
lineno);
+                       errlogx(EX_CONFIG, "syntax error in %s:%d", 
config_path, lineno);
                        /* NOTREACHED */
                }
        }
 
        if ((config.features & NULLCLIENT) && config.smarthost == NULL) {
-               errlogx(1, "%s: NULLCLIENT requires SMARTHOST", config_path);
+               errlogx(EX_CONFIG, "%s: NULLCLIENT requires SMARTHOST", 
config_path);
                /* NOTREACHED */
        }
 

Modified: vendor/dma/dist/dma-mbox-create.c
==============================================================================
--- vendor/dma/dist/dma-mbox-create.c   Sat Oct 10 23:16:40 2015        
(r289120)
+++ vendor/dma/dist/dma-mbox-create.c   Sat Oct 10 23:22:05 2015        
(r289121)
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2010 Simon Schubert <2...@0x2c.org>
+ * Copyright (c) 2010-2014, Simon Schubert <2...@0x2c.org>.
  * Copyright (c) 2008 The DragonFly Project.  All rights reserved.
  *
  * This code is derived from software contributed to The DragonFly Project
- * by Simon 'corecode' Schubert <corec...@fs.ei.tum.de>.
+ * by Simon Schubert <2...@0x2c.org>.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -54,7 +54,7 @@
 
 
 static void
-logfail(const char *fmt, ...)
+logfail(int exitcode, const char *fmt, ...)
 {
        int oerrno = errno;
        va_list ap;
@@ -73,7 +73,7 @@ logfail(const char *fmt, ...)
        else
                syslog(LOG_ERR, errno ? "%m" : "unknown error");
 
-       exit(1);
+       exit(exitcode);
 }
 
 /*
@@ -98,21 +98,21 @@ main(int argc, char **argv)
        errno = 0;
        gr = getgrnam(DMA_GROUP);
        if (!gr)
-               logfail("cannot find dma group `%s'", DMA_GROUP);
+               logfail(EX_CONFIG, "cannot find dma group `%s'", DMA_GROUP);
 
        mail_gid = gr->gr_gid;
 
        if (setgid(mail_gid) != 0)
-               logfail("cannot set gid to %d (%s)", mail_gid, DMA_GROUP);
+               logfail(EX_NOPERM, "cannot set gid to %d (%s)", mail_gid, 
DMA_GROUP);
        if (getegid() != mail_gid)
-               logfail("cannot set gid to %d (%s), still at %d", mail_gid, 
DMA_GROUP, getegid());
+               logfail(EX_NOPERM, "cannot set gid to %d (%s), still at %d", 
mail_gid, DMA_GROUP, getegid());
 
        /*
         * We take exactly one argument: the username.
         */
        if (argc != 2) {
                errno = 0;
-               logfail("no arguments");
+               logfail(EX_USAGE, "no arguments");
        }
        user = argv[1];
 
@@ -121,7 +121,7 @@ main(int argc, char **argv)
        /* the username may not contain a pathname separator */
        if (strchr(user, '/')) {
                errno = 0;
-               logfail("path separator in username `%s'", user);
+               logfail(EX_DATAERR, "path separator in username `%s'", user);
                exit(1);
        }
 
@@ -129,7 +129,7 @@ main(int argc, char **argv)
        errno = 0;
        pw = getpwnam(user);
        if (!pw)
-               logfail("cannot find user `%s'", user);
+               logfail(EX_NOUSER, "cannot find user `%s'", user);
 
        user_uid = pw->pw_uid;
 
@@ -137,20 +137,20 @@ main(int argc, char **argv)
        if (error < 0 || (size_t)error >= sizeof(fn)) {
                if (error >= 0) {
                        errno = 0;
-                       logfail("mbox path too long");
+                       logfail(EX_USAGE, "mbox path too long");
                }
-               logfail("cannot build mbox path for `%s/%s'", _PATH_MAILDIR, 
user);
+               logfail(EX_CANTCREAT, "cannot build mbox path for `%s/%s'", 
_PATH_MAILDIR, user);
        }
 
        f = open(fn, O_RDONLY|O_CREAT, 0600);
        if (f < 0)
-               logfail("cannot open mbox `%s'", fn);
+               logfail(EX_NOINPUT, "cannt open mbox `%s'", fn);
 
        if (fchown(f, user_uid, mail_gid))
-               logfail("cannot change owner of mbox `%s'", fn);
+               logfail(EX_OSERR, "cannot change owner of mbox `%s'", fn);
 
        if (fchmod(f, 0620))
-               logfail("cannot change permissions of mbox `%s'", fn);
+               logfail(EX_OSERR, "cannot change permissions of mbox `%s'", fn);
 
        /* file should be present with the right owner and permissions */
 

Modified: vendor/dma/dist/dma.8
==============================================================================
--- vendor/dma/dist/dma.8       Sat Oct 10 23:16:40 2015        (r289120)
+++ vendor/dma/dist/dma.8       Sat Oct 10 23:22:05 2015        (r289121)
@@ -1,4 +1,5 @@
 .\"
+.\" Copyright (c) 2008-2014, Simon Schubert <2...@0x2c.org>.
 .\" Copyright (c) 2008
 .\"    The DragonFly Project.  All rights reserved.
 .\"

Modified: vendor/dma/dist/dma.c
==============================================================================
--- vendor/dma/dist/dma.c       Sat Oct 10 23:16:40 2015        (r289120)
+++ vendor/dma/dist/dma.c       Sat Oct 10 23:22:05 2015        (r289121)
@@ -1,8 +1,9 @@
 /*
+ * Copyright (c) 2008-2014, Simon Schubert <2...@0x2c.org>.
  * Copyright (c) 2008 The DragonFly Project.  All rights reserved.
  *
  * This code is derived from software contributed to The DragonFly Project
- * by Simon 'corecode' Schubert <corec...@fs.ei.tum.de>.
+ * by Simon Schubert <2...@0x2c.org>.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -247,7 +248,7 @@ go_background(struct queue *queue)
 
        if (daemonize && daemon(0, 0) != 0) {
                syslog(LOG_ERR, "can not daemonize: %m");
-               exit(1);
+               exit(EX_OSERR);
        }
        daemonize = 0;
 
@@ -264,7 +265,7 @@ go_background(struct queue *queue)
                switch (pid) {
                case -1:
                        syslog(LOG_ERR, "can not fork: %m");
-                       exit(1);
+                       exit(EX_OSERR);
                        break;
 
                case 0:
@@ -286,11 +287,11 @@ retit:
                                break;
                        case 1:
                                if (doqueue)
-                                       exit(0);
+                                       exit(EX_OK);
                                syslog(LOG_WARNING, "could not lock queue 
file");
-                               exit(1);
+                               exit(EX_SOFTWARE);
                        default:
-                               exit(1);
+                               exit(EX_SOFTWARE);
                        }
                        dropspool(queue, it);
                        return (it);
@@ -306,7 +307,7 @@ retit:
        }
 
        syslog(LOG_CRIT, "reached dead code");
-       exit(1);
+       exit(EX_SOFTWARE);
 }
 
 static void
@@ -331,12 +332,12 @@ retry:
        case 0:
                delqueue(it);
                syslog(LOG_INFO, "delivery successful");
-               exit(0);
+               exit(EX_OK);
 
        case 1:
                if (stat(it->queuefn, &st) != 0) {
                        syslog(LOG_ERR, "lost queue file `%s'", it->queuefn);
-                       exit(1);
+                       exit(EX_SOFTWARE);
                }
                if (gettimeofday(&now, NULL) == 0 &&
                    (now.tv_sec - st.st_mtim.tv_sec > MAX_TIMEOUT)) {
@@ -438,16 +439,16 @@ main(int argc, char **argv)
                pw = getpwnam(DMA_ROOT_USER);
                if (pw == NULL) {
                        if (errno == 0)
-                               errx(1, "user '%s' not found", DMA_ROOT_USER);
+                               errx(EX_CONFIG, "user '%s' not found", 
DMA_ROOT_USER);
                        else
-                               err(1, "cannot drop root privileges");
+                               err(EX_OSERR, "cannot drop root privileges");
                }
 
                if (setuid(pw->pw_uid) != 0)
-                       err(1, "cannot drop root privileges");
+                       err(EX_OSERR, "cannot drop root privileges");
 
                if (geteuid() == 0 || getuid() == 0)
-                       errx(1, "cannot drop root privileges");
+                       errx(EX_OSERR, "cannot drop root privileges");
        }
 
        atexit(deltmp);
@@ -460,15 +461,15 @@ main(int argc, char **argv)
                argv++; argc--;
                showq = 1;
                if (argc != 0)
-                       errx(1, "invalid arguments");
+                       errx(EX_USAGE, "invalid arguments");
                goto skipopts;
        } else if (strcmp(argv[0], "newaliases") == 0) {
                logident_base = "dma";
                setlogident(NULL);
 
                if (read_aliases() != 0)
-                       errx(1, "could not parse aliases file `%s'", 
config.aliases);
-               exit(0);
+                       errx(EX_SOFTWARE, "could not parse aliases file `%s'", 
config.aliases);
+               exit(EX_OK);
        }
 
        opterr = 0;
@@ -547,7 +548,7 @@ main(int argc, char **argv)
 
                default:
                        fprintf(stderr, "invalid argument: `-%c'\n", optopt);
-                       exit(1);
+                       exit(EX_USAGE);
                }
        }
        argc -= optind;
@@ -555,10 +556,10 @@ main(int argc, char **argv)
        opterr = 1;
 
        if (argc != 0 && (showq || doqueue))
-               errx(1, "sending mail and queue operations are mutually 
exclusive");
+               errx(EX_USAGE, "sending mail and queue operations are mutually 
exclusive");
 
        if (showq + doqueue > 1)
-               errx(1, "conflicting queue operations");
+               errx(EX_USAGE, "conflicting queue operations");
 
 skipopts:
        if (logident_base == NULL)
@@ -578,7 +579,7 @@ skipopts:
 
        if (showq) {
                if (load_queue(&queue) < 0)
-                       errlog(1, "can not load queue");
+                       errlog(EX_NOINPUT, "can not load queue");
                show_queue(&queue);
                return (0);
        }
@@ -586,38 +587,38 @@ skipopts:
        if (doqueue) {
                flushqueue_signal();
                if (load_queue(&queue) < 0)
-                       errlog(1, "can not load queue");
+                       errlog(EX_NOINPUT, "can not load queue");
                run_queue(&queue);
                return (0);
        }
 
        if (read_aliases() != 0)
-               errlog(1, "could not parse aliases file `%s'", config.aliases);
+               errlog(EX_SOFTWARE, "could not parse aliases file `%s'", 
config.aliases);
 
        if ((sender = set_from(&queue, sender)) == NULL)
-               errlog(1, NULL);
+               errlog(EX_SOFTWARE, NULL);
 
        if (newspoolf(&queue) != 0)
-               errlog(1, "can not create temp file in `%s'", config.spooldir);
+               errlog(EX_CANTCREAT, "can not create temp file in `%s'", 
config.spooldir);
 
        setlogident("%s", queue.id);
 
        for (i = 0; i < argc; i++) {
                if (add_recp(&queue, argv[i], EXPAND_WILDCARD) != 0)
-                       errlogx(1, "invalid recipient `%s'", argv[i]);
+                       errlogx(EX_DATAERR, "invalid recipient `%s'", argv[i]);
        }
 
        if (LIST_EMPTY(&queue.queue) && !recp_from_header)
-               errlogx(1, "no recipients");
+               errlogx(EX_NOINPUT, "no recipients");
 
        if (readmail(&queue, nodot, recp_from_header) != 0)
-               errlog(1, "can not read mail");
+               errlog(EX_NOINPUT, "can not read mail");
 
        if (LIST_EMPTY(&queue.queue))
-               errlogx(1, "no recipients");
+               errlogx(EX_NOINPUT, "no recipients");
 
        if (linkspool(&queue) != 0)
-               errlog(1, "can not create spools");
+               errlog(EX_CANTCREAT, "can not create spools");
 
        /* From here on the mail is safe. */
 

Modified: vendor/dma/dist/dma.h
==============================================================================
--- vendor/dma/dist/dma.h       Sat Oct 10 23:16:40 2015        (r289120)
+++ vendor/dma/dist/dma.h       Sat Oct 10 23:22:05 2015        (r289121)
@@ -1,8 +1,9 @@
 /*
+ * Copyright (c) 2008-2014, Simon Schubert <2...@0x2c.org>.
  * Copyright (c) 2008 The DragonFly Project.  All rights reserved.
  *
  * This code is derived from software contributed to The DragonFly Project
- * by Simon 'corecode' Schubert <corec...@fs.ei.tum.de> and
+ * by Simon Schubert <2...@0x2c.org> and
  * Matthias Schmidt <matth...@dragonflybsd.org>.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -43,6 +44,7 @@
 #include <arpa/inet.h>
 #include <openssl/ssl.h>
 #include <netdb.h>
+#include <sysexits.h>
 
 #define VERSION        "DragonFly Mail Agent " DMA_VERSION
 
@@ -173,6 +175,8 @@ extern char errmsg[ERRMSG_SIZE];
 
 /* aliases_parse.y */
 int yyparse(void);
+int yywrap(void);
+int yylex(void);
 extern FILE *yyin;
 
 /* conf.c */

Modified: vendor/dma/dist/dns.c
==============================================================================
--- vendor/dma/dist/dns.c       Sat Oct 10 23:16:40 2015        (r289120)
+++ vendor/dma/dist/dns.c       Sat Oct 10 23:22:05 2015        (r289121)
@@ -1,8 +1,9 @@
 /*
+ * Copyright (c) 2008-2014, Simon Schubert <2...@0x2c.org>.
  * Copyright (c) 2008 The DragonFly Project.  All rights reserved.
  *
  * This code is derived from software contributed to The DragonFly Project
- * by Simon 'corecode' Schubert <corec...@fs.ei.tum.de>
+ * by Simon Schubert <2...@0x2c.org>.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -67,7 +68,6 @@ add_host(int pref, const char *host, int
        char servname[10];
        struct mx_hostentry *p;
        const int count_inc = 10;
-       int err;
 
        memset(&hints, 0, sizeof(hints));
        hints.ai_family = PF_UNSPEC;
@@ -75,9 +75,26 @@ add_host(int pref, const char *host, int
        hints.ai_protocol = IPPROTO_TCP;
 
        snprintf(servname, sizeof(servname), "%d", port);
-       err = getaddrinfo(host, servname, &hints, &res0);
-       if (err)
-               return (err == EAI_AGAIN ? 1 : -1);
+       switch (getaddrinfo(host, servname, &hints, &res0)) {
+       case 0:
+               break;
+       case EAI_AGAIN:
+       case EAI_NONAME:
+               /*
+                * EAI_NONAME gets returned for:
+                * SMARTHOST set but DNS server not reachable -> defer
+                * SMARTHOST set but DNS server returns "host does not exist"
+                *           -> buggy configuration
+                *           -> either defer or bounce would be ok -> defer
+                * MX entry was returned by DNS server but name doesn't resolve
+                *           -> hopefully transient situation -> defer
+                * all other DNS problems should have been caught earlier
+                * in dns_get_mx_list().
+                */
+               goto out;
+       default:
+               return(-1);
+       }
 
        for (res = res0; res != NULL; res = res->ai_next) {
                if (*ps + 1 >= roundup(*ps, count_inc)) {

Modified: vendor/dma/dist/get-version.sh
==============================================================================
--- vendor/dma/dist/get-version.sh      Sat Oct 10 23:16:40 2015        
(r289120)
+++ vendor/dma/dist/get-version.sh      Sat Oct 10 23:22:05 2015        
(r289121)
@@ -1,7 +1,9 @@
 #!/bin/sh
 
+tmp=$1
+file=${tmp:=VERSION}
 gitver=$(git describe 2>/dev/null | tr - .)
-filever=$(cat VERSION)
+filever=$(cat ${file} 2>/dev/null)
 
 version=${gitver}
 : ${version:=$filever}

Modified: vendor/dma/dist/local.c
==============================================================================
--- vendor/dma/dist/local.c     Sat Oct 10 23:16:40 2015        (r289120)
+++ vendor/dma/dist/local.c     Sat Oct 10 23:22:05 2015        (r289121)
@@ -1,8 +1,9 @@
 /*
+ * Copyright (c) 2008-2014, Simon Schubert <2...@0x2c.org>.
  * Copyright (c) 2008 The DragonFly Project.  All rights reserved.
  *
  * This code is derived from software contributed to The DragonFly Project
- * by Simon 'corecode' Schubert <corec...@fs.ei.tum.de>.
+ * by Simon Schubert <2...@0x2c.org>.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -81,7 +82,7 @@ create_mbox(const char *name)
 
                execl(LIBEXEC_PATH "/dma-mbox-create", "dma-mbox-create", name, 
NULL);
                syslog(LOG_ERR, "cannot execute "LIBEXEC_PATH"/dma-mbox-create: 
%m");
-               exit(1);
+               exit(EX_SOFTWARE);
 
        default:
                /* parent */

Modified: vendor/dma/dist/mail.c
==============================================================================
--- vendor/dma/dist/mail.c      Sat Oct 10 23:16:40 2015        (r289120)
+++ vendor/dma/dist/mail.c      Sat Oct 10 23:22:05 2015        (r289121)
@@ -1,8 +1,9 @@
 /*
+ * Copyright (c) 2008-2014, Simon Schubert <2...@0x2c.org>.
  * Copyright (c) 2008 The DragonFly Project.  All rights reserved.
  *
  * This code is derived from software contributed to The DragonFly Project
- * by Simon 'corecode' Schubert <corec...@fs.ei.tum.de>.
+ * by Simon Schubert <2...@0x2c.org>.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -51,7 +52,7 @@ bounce(struct qitem *it, const char *rea
        /* Don't bounce bounced mails */
        if (it->sender[0] == 0) {
                syslog(LOG_INFO, "can not bounce a bounce message, discarding");
-               exit(1);
+               exit(EX_SOFTWARE);
        }
 
        bzero(&bounceq, sizeof(bounceq));
@@ -132,7 +133,7 @@ bounce(struct qitem *it, const char *rea
 fail:
        syslog(LOG_CRIT, "error creating bounce: %m");
        delqueue(it);
-       exit(1);
+       exit(EX_IOERR);
 }
 
 struct parse_state {
@@ -332,10 +333,10 @@ newaddr:
        ps->pos = 0;
        addr = strdup(ps->addr);
        if (addr == NULL)
-               errlog(1, NULL);
+               errlog(EX_SOFTWARE, NULL);
 
        if (add_recp(queue, addr, EXPAND_WILDCARD) != 0)
-               errlogx(1, "invalid recipient `%s'", addr);
+               errlogx(EX_DATAERR, "invalid recipient `%s'", addr);
 
        goto again;
 }
@@ -374,7 +375,9 @@ readmail(struct queue *queue, int nodot,
                if (fgets(line, sizeof(line) - 1, stdin) == NULL)
                        break;
                if (had_last_line)
-                       errlogx(1, "bad mail input format");
+                       errlogx(EX_DATAERR, "bad mail input format:"
+                               " from %s (uid %d) (envelope-from %s)",
+                               username, useruid, queue->sender);
                linelen = strlen(line);
                if (linelen == 0 || line[linelen - 1] != '\n') {
                        /*
@@ -405,7 +408,7 @@ readmail(struct queue *queue, int nodot,
 
                        if (parse_state.state != NONE) {
                                if (parse_addrs(&parse_state, line, queue) < 0) 
{
-                                       errlogx(1, "invalid address in 
header\n");
+                                       errlogx(EX_DATAERR, "invalid address in 
header\n");
                                        /* NOTREACHED */
                                }
                        }
@@ -416,7 +419,7 @@ readmail(struct queue *queue, int nodot,
                                        strprefixcmp(line, "Bcc:") == 0)) {
                                parse_state.state = START;
                                if (parse_addrs(&parse_state, line, queue) < 0) 
{
-                                       errlogx(1, "invalid address in 
header\n");
+                                       errlogx(EX_DATAERR, "invalid address in 
header\n");
                                        /* NOTREACHED */
                                }
                        }

Modified: vendor/dma/dist/net.c
==============================================================================
--- vendor/dma/dist/net.c       Sat Oct 10 23:16:40 2015        (r289120)
+++ vendor/dma/dist/net.c       Sat Oct 10 23:22:05 2015        (r289121)
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2008-2014, Simon Schubert <2...@0x2c.org>.
  * Copyright (c) 2008 The DragonFly Project.  All rights reserved.
  *
  * This code is derived from software contributed to The DragonFly Project

Modified: vendor/dma/dist/spool.c
==============================================================================
--- vendor/dma/dist/spool.c     Sat Oct 10 23:16:40 2015        (r289120)
+++ vendor/dma/dist/spool.c     Sat Oct 10 23:22:05 2015        (r289121)
@@ -1,8 +1,9 @@
 /*
+ * Copyright (c) 2008-2014, Simon Schubert <2...@0x2c.org>.
  * Copyright (c) 2008 The DragonFly Project.  All rights reserved.
  *
  * This code is derived from software contributed to The DragonFly Project
- * by Simon 'corecode' Schubert <corec...@fs.ei.tum.de>.
+ * by Simon Schubert <2...@0x2c.org>.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -289,7 +290,7 @@ load_queue(struct queue *queue)
 
        spooldir = opendir(config.spooldir);
        if (spooldir == NULL)
-               err(1, "reading queue");
+               err(EX_NOINPUT, "reading queue");
 
        while ((de = readdir(spooldir)) != NULL) {
                queuefn = NULL;

Modified: vendor/dma/dist/util.c
==============================================================================
--- vendor/dma/dist/util.c      Sat Oct 10 23:16:40 2015        (r289120)
+++ vendor/dma/dist/util.c      Sat Oct 10 23:22:05 2015        (r289121)
@@ -1,8 +1,9 @@
 /*
+ * Copyright (c) 2008-2014, Simon Schubert <2...@0x2c.org>.
  * Copyright (c) 2008 The DragonFly Project.  All rights reserved.
  *
  * This code is derived from software contributed to The DragonFly Project
- * by Simon 'corecode' Schubert <corec...@fs.ei.tum.de>.
+ * by Simon Schubert <2...@0x2c.org>.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to