diff options
Diffstat (limited to 'contrib/sendmail/libmilter/main.c')
-rw-r--r-- | contrib/sendmail/libmilter/main.c | 241 |
1 files changed, 0 insertions, 241 deletions
diff --git a/contrib/sendmail/libmilter/main.c b/contrib/sendmail/libmilter/main.c deleted file mode 100644 index 4e62c45fb1446..0000000000000 --- a/contrib/sendmail/libmilter/main.c +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright (c) 1999-2003 Sendmail, Inc. and its suppliers. - * All rights reserved. - * - * By using this file, you agree to the terms and conditions set - * forth in the LICENSE file which can be found at the top level of - * the sendmail distribution. - * - */ - -#include <sm/gen.h> -SM_RCSID("@(#)$Id: main.c,v 8.64.2.10 2003/01/23 22:34:24 ca Exp $") - -#define _DEFINE 1 -#include "libmilter.h" -#include <fcntl.h> -#include <sys/stat.h> - - -static smfiDesc_ptr smfi = NULL; - -/* -** SMFI_REGISTER -- register a filter description -** -** Parameters: -** smfilter -- description of filter to register -** -** Returns: -** MI_SUCCESS/MI_FAILURE -*/ - -int -smfi_register(smfilter) - smfiDesc_str smfilter; -{ - size_t len; - - if (smfi == NULL) - { - smfi = (smfiDesc_ptr) malloc(sizeof *smfi); - if (smfi == NULL) - return MI_FAILURE; - } - (void) memcpy(smfi, &smfilter, sizeof *smfi); - if (smfilter.xxfi_name == NULL) - smfilter.xxfi_name = "Unknown"; - - len = strlen(smfilter.xxfi_name) + 1; - smfi->xxfi_name = (char *) malloc(len); - if (smfi->xxfi_name == NULL) - return MI_FAILURE; - (void) sm_strlcpy(smfi->xxfi_name, smfilter.xxfi_name, len); - - /* compare milter version with hard coded version */ - if (smfi->xxfi_version != SMFI_VERSION) - { - /* hard failure for now! */ - smi_log(SMI_LOG_ERR, - "%s: smfi_register: version mismatch application: %d != milter: %d", - smfi->xxfi_name, smfi->xxfi_version, - (int) SMFI_VERSION); - - /* XXX how about smfi? */ - free(smfi->xxfi_name); - return MI_FAILURE; - } - - return MI_SUCCESS; -} - -/* -** SMFI_STOP -- stop milter -** -** Parameters: -** none. -** -** Returns: -** success. -*/ - -int -smfi_stop() -{ - mi_stop_milters(MILTER_STOP); - return MI_SUCCESS; -} - -/* -** default values for some variables. -** Most of these can be changed with the functions below. -*/ - -static int dbg = 0; -static char *conn = NULL; -static int timeout = MI_TIMEOUT; -static int backlog = MI_SOMAXCONN; - -#if _FFR_SMFI_OPENSOCKET -/* -** SMFI_OPENSOCKET -- try the socket setup to make sure we'll be -** able to start up -** -** Parameters: -** None. -** -** Return: -** MI_SUCCESS/MI_FAILURE -*/ - -int -smfi_opensocket() -{ - if (smfi == NULL || conn == NULL) - return MI_FAILURE; - - return mi_opensocket(conn, backlog, dbg, smfi); -} -#endif /* _FFR_SMFI_OPENSOCKET */ - -/* -** SMFI_SETDBG -- set debug level. -** -** Parameters: -** odbg -- new debug level. -** -** Returns: -** MI_SUCCESS -*/ - -int -smfi_setdbg(odbg) - int odbg; -{ - dbg = odbg; - return MI_SUCCESS; -} - -/* -** SMFI_SETTIMEOUT -- set timeout (for read/write). -** -** Parameters: -** otimeout -- new timeout. -** -** Returns: -** MI_SUCCESS -*/ - -int -smfi_settimeout(otimeout) - int otimeout; -{ - timeout = otimeout; - return MI_SUCCESS; -} - -/* -** SMFI_SETCONN -- set connection information (socket description) -** -** Parameters: -** oconn -- new connection information. -** -** Returns: -** MI_SUCCESS/MI_FAILURE -*/ - -int -smfi_setconn(oconn) - char *oconn; -{ - size_t l; - - if (oconn == NULL || *oconn == '\0') - return MI_FAILURE; - l = strlen(oconn) + 1; - if ((conn = (char *) malloc(l)) == NULL) - return MI_FAILURE; - if (sm_strlcpy(conn, oconn, l) >= l) - return MI_FAILURE; - return MI_SUCCESS; -} - -/* -** SMFI_SETBACKLOG -- set backlog -** -** Parameters: -** obacklog -- new backlog. -** -** Returns: -** MI_SUCCESS/MI_FAILURE -*/ - -int -smfi_setbacklog(obacklog) - int obacklog; -{ - if (obacklog <= 0) - return MI_FAILURE; - backlog = obacklog; - return MI_SUCCESS; -} - - -/* -** SMFI_MAIN -- setup milter connnection and start listener. -** -** Parameters: -** none. -** -** Returns: -** MI_SUCCESS/MI_FAILURE -*/ - -int -smfi_main() -{ - int r; - - (void) signal(SIGPIPE, SIG_IGN); - if (conn == NULL) - { - smi_log(SMI_LOG_FATAL, "%s: missing connection information", - smfi->xxfi_name); - return MI_FAILURE; - } - - (void) atexit(mi_clean_signals); - if (mi_control_startup(smfi->xxfi_name) != MI_SUCCESS) - { - smi_log(SMI_LOG_FATAL, - "%s: Couldn't start signal thread", - smfi->xxfi_name); - return MI_FAILURE; - } - r = MI_SUCCESS; - - /* Startup the listener */ - if (mi_listener(conn, dbg, smfi, timeout, backlog) != MI_SUCCESS) - r = MI_FAILURE; - return r; -} - |