Kay Zenner - 2007-11-13

I've found out that the milter doesn't work with the postfix-milter implementation.
This happens because the xxfi_negotiate function is not implemented.
Sendmail seems to ignore this, but postfix needs this function.

I've patched the sourcecode with an implementation of this function. This shouldn't touch the sendmail functionallity but makes the milter lib work with postfix.

Greets
Kay

patch >>> snip here <<<

diff -Naur Sendmail-Milter-0.18.org/callbacks.c Sendmail-Milter-0.18/callbacks.c
--- Sendmail-Milter-0.18.org/callbacks.c        2000-07-19 08:20:36.000000000 +0200
+++ Sendmail-Milter-0.18/callbacks.c    2007-11-12 16:15:12.000000000 +0100
@@ -50,6 +50,7 @@

/* Callback prototypes for first-level callback wrappers. */

+sfsistat hook_negotiate(SMFICTX *,unsigned long ,unsigned long ,unsigned long ,unsigned long ,unsigned long *,unsigned long *,unsigned lon
g *,unsigned long *);
sfsistat hook_connect(SMFICTX *, char *, _SOCK_ADDR *);
sfsistat hook_helo(SMFICTX *, char *);
sfsistat hook_envfrom(SMFICTX *, char **);
@@ -165,6 +166,8 @@
        desc->xxfi_version = SMFI_VERSION;
        desc->xxfi_flags = flags;

+       desc->xxfi_negotiate =  hook_negotiate;
+
        if (hv_exists_ent(my_callback_table, KEY_CONNECT, 0))
        {
                init_callback(GLOBAL_CONNECT,
@@ -766,3 +769,17 @@
        return retval;
}

+sfsistat
+hook_negotiate(ctx, f0, f1, f2, f3, pf0, pf1, pf2, pf3)
+        SMFICTX    *ctx;
+       unsigned long f0;
+        unsigned long f1;
+       unsigned long f2;
+        unsigned long f3;
+       unsigned long *pf0;
+        unsigned long *pf1;
+        unsigned long *pf2;
+       unsigned long *pf3;
+{
+       return SMFIS_ALL_OPTS;
+}