Merge from vendor branch SENDMAIL:
authorGregory Neil Shapiro <gshapiro@dragonflybsd.org>
Fri, 27 Apr 2007 03:55:39 +0000 (03:55 +0000)
committerGregory Neil Shapiro <gshapiro@dragonflybsd.org>
Fri, 27 Apr 2007 03:55:39 +0000 (03:55 +0000)
Bring in sendmail.org code from the future 8.14.2 release which restores
ABI compatibility to users of the libmilter.so shared library.

contrib/sendmail-8.14/libmilter/engine.c
contrib/sendmail-8.14/libmilter/listener.c
contrib/sendmail-8.14/libmilter/main.c

index a61cf56..d7a5a41 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (c) 1999-2004, 2006 Sendmail, Inc. and its suppliers.
+ *  Copyright (c) 1999-2004, 2006, 2007 Sendmail, Inc. and its suppliers.
  *     All rights reserved.
  *
  * By using this file, you agree to the terms and conditions set
@@ -855,6 +855,7 @@ st_optionneg(g)
                        ;
 
        if (g->a_ctx->ctx_smfi != NULL &&
+           g->a_ctx->ctx_smfi->xxfi_version > 4 &&
            (fi_negotiate = g->a_ctx->ctx_smfi->xxfi_negotiate) != NULL)
        {
                int r;
@@ -1177,6 +1178,7 @@ st_data(g)
        if (g == NULL)
                return _SMFIS_ABORT;
        if (g->a_ctx->ctx_smfi != NULL &&
+           g->a_ctx->ctx_smfi->xxfi_version > 3 &&
            (fi_data = g->a_ctx->ctx_smfi->xxfi_data) != NULL)
                return (*fi_data)(g->a_ctx);
        return SMFIS_CONTINUE;
@@ -1310,6 +1312,7 @@ st_unknown(g)
        if (g == NULL)
                return _SMFIS_ABORT;
        if (g->a_ctx->ctx_smfi != NULL &&
+           g->a_ctx->ctx_smfi->xxfi_version > 2 &&
            (fi_unknown = g->a_ctx->ctx_smfi->xxfi_unknown) != NULL)
                return (*fi_unknown)(g->a_ctx, (const char *) g->a_buf);
        return SMFIS_CONTINUE;
index cf98361..62d5eed 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (c) 1999-2006 Sendmail, Inc. and its suppliers.
+ *  Copyright (c) 1999-2007 Sendmail, Inc. and its suppliers.
  *     All rights reserved.
  *
  * By using this file, you agree to the terms and conditions set
@@ -927,9 +927,9 @@ mi_listener(conn, dbg, smfi, timeout, backlog)
                        ctx->ctx_pflags |= SMFIP_NOEOH;
                if (smfi->xxfi_body == NULL)
                        ctx->ctx_pflags |= SMFIP_NOBODY;
-               if (smfi->xxfi_data == NULL)
+               if (smfi->xxfi_version <= 3 || smfi->xxfi_data == NULL)
                        ctx->ctx_pflags |= SMFIP_NODATA;
-               if (smfi->xxfi_unknown == NULL)
+               if (smfi->xxfi_version <= 2 || smfi->xxfi_unknown == NULL)
                        ctx->ctx_pflags |= SMFIP_NOUNKNOWN;
 
 #if _FFR_WORKERS_POOL
index d3150d1..c8d98c4 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (c) 1999-2003, 2006 Sendmail, Inc. and its suppliers.
+ *  Copyright (c) 1999-2003, 2006, 2007 Sendmail, Inc. and its suppliers.
  *     All rights reserved.
  *
  * By using this file, you agree to the terms and conditions set
@@ -52,7 +52,10 @@ smfi_register(smfilter)
        (void) sm_strlcpy(smfi->xxfi_name, smfilter.xxfi_name, len);
 
        /* compare milter version with hard coded version */
-       if (smfi->xxfi_version != SMFI_VERSION)
+       if (smfi->xxfi_version != SMFI_VERSION &&
+           smfi->xxfi_version != 2 &&
+           smfi->xxfi_version != 3 &&
+           smfi->xxfi_version != 4)
        {
                /* hard failure for now! */
                smi_log(SMI_LOG_ERR,