441 #define QMGR_SCAN_IDX_INCOMING 0
442 #define QMGR_SCAN_IDX_DEFERRED 1
443 #define QMGR_SCAN_IDX_COUNT (sizeof(qmgr_scans) / sizeof(qmgr_scans[0]))
447 static void qmgr_deferred_run_event(
int unused_event,
void *dummy)
460 static void qmgr_trigger_event(
char *buf, ssize_t len,
461 char *unused_service,
char **argv)
463 int incoming_flag = 0;
464 int deferred_flag = 0;
471 msg_fatal(
"unexpected command-line argument: %s", argv[0]);
479 #define QMGR_FLUSH_BEFORE (QMGR_FLUSH_ONCE | QMGR_FLUSH_DFXP)
481 for (i = 0; i < len; i++) {
484 buf[i],
ISALNUM(buf[i]) ? buf[i] :
'?');
513 if (incoming_flag != 0)
515 if (deferred_flag != 0)
521 static int qmgr_loop(
char *unused_name,
char **unused_argv)
539 #define WAIT_FOR_EVENT (-1)
561 last_scan_idx = (scan_idx + first_scan_idx) % QMGR_SCAN_IDX_COUNT;
575 first_scan_idx = (last_scan_idx + 1) % QMGR_SCAN_IDX_COUNT;
600 static void pre_accept(
char *unused_name,
char **unused_argv)
605 msg_info(
"table %s has changed -- restarting", table);
612 static void qmgr_pre_init(
char *unused_name,
char **unused_argv)
619 static void qmgr_post_init(
char *unused_name,
char **unused_argv)
626 msg_warn(
"%s is smaller than %s - adjusting %s",
631 msg_warn(
"%s is larger than %s - adjusting %s",
657 qmgr_deferred_run_event(0, (
void *) 0);
664 int main(
int argc,
char **argv)
#define VAR_DEST_CON_LIMIT
int qmgr_active_feed(QMGR_SCAN *, const char *)
#define DEF_VRFY_PEND_LIMIT
#define CA_MAIL_SERVER_WATCHDOG(v)
#define DEF_INIT_DEST_CON
#define VAR_QUEUE_RUN_DELAY
#define DEF_XPORT_RETRY_TIME
int var_qmgr_active_limit
#define CA_MAIL_SERVER_BOOL_TABLE(v)
#define QMGR_REQ_SCAN_DEFERRED
#define VAR_DSN_QUEUE_TIME
#define DEF_QUEUE_RUN_DELAY
#define CA_MAIL_SERVER_STR_TABLE(v)
#define MAIL_QUEUE_ACTIVE
ssize_t mail_flow_count(void)
int var_init_dest_concurrency
#define VAR_DSN_DELAY_CLEARED
#define DEF_QMGR_RCPT_LIMIT
#define VAR_LOCAL_CON_LIMIT
#define DEF_DEST_CON_LIMIT
#define QMGR_SCAN_IDX_INCOMING
int var_conc_cohort_limit
int var_conc_feedback_debug
#define VAR_CONC_NEG_FDBACK
int var_transport_retry_time
#define CA_MAIL_SERVER_LOOP(v)
#define DEF_CONC_POS_FDBACK
#define VAR_MAX_BACKOFF_TIME
#define VAR_DEST_RCPT_LIMIT
int var_qmgr_clog_warn_time
#define VAR_INIT_DEST_CON
#define DEF_VERP_BOUNCE_OFF
#define DEF_LOCAL_CON_LIMIT
NORETURN trigger_server_main(int, char **, TRIGGER_SERVER_FN,...)
#define VAR_CONC_COHORT_LIM
int var_dsn_delay_cleared
#define VAR_QMGR_IPC_TIMEOUT
#define DEF_QMGR_CLOG_WARN_TIME
ssize_t mail_flow_put(ssize_t len)
char * var_def_filter_nexthop
QMGR_SCAN * qmgr_scan_create(const char *)
#define DEF_LOCAL_RCPT_LIMIT
#define CA_MAIL_SERVER_POST_INIT(v)
#define CA_MAIL_SERVER_INT_TABLE(v)
#define DEF_QMGR_ACT_LIMIT
#define VAR_QMGR_DAEMON_TIMEOUT
#define VAR_VRFY_PEND_LIMIT
#define VAR_QMGR_CLOG_WARN_TIME
const char * dict_changed_name(void)
void qmgr_active_drain(void)
void qmgr_scan_request(QMGR_SCAN *, int)
ssize_t mail_flow_get(ssize_t len)
#define QMGR_SCAN_IDX_COUNT
#define MAIL_QUEUE_INCOMING
void msg_warn(const char *fmt,...)
#define DEF_CONC_FDBACK_DEBUG
#define VAR_CONC_POS_FDBACK
#define MAIL_VERSION_STAMP_ALLOCATE
#define CA_MAIL_SERVER_TIME_TABLE(v)
#define DEF_QMGR_IPC_TIMEOUT
#define DEF_MAX_BACKOFF_TIME
#define DEF_DEST_RCPT_LIMIT
#define DEF_MIN_BACKOFF_TIME
#define VAR_XPORT_RATE_DELAY
NORETURN msg_fatal(const char *fmt,...)
#define DEF_CONC_NEG_FDBACK
#define VAR_QMGR_RCPT_LIMIT
char * var_conc_pos_feedback
#define QMGR_FLUSH_BEFORE
#define QMGR_REQ_SCAN_INCOMING
#define MAIL_QUEUE_DEFERRED
#define VAR_DEF_FILTER_NEXTHOP
#define VAR_QMGR_ACT_LIMIT
int var_qmgr_daemon_timeout
#define VAR_CONC_FDBACK_DEBUG
#define VAR_LOCAL_RCPT_LIMIT
#define TRIGGER_REQ_WAKEUP
time_t event_request_timer(EVENT_NOTIFY_TIME_FN callback, void *context, int delay)
int main(int argc, char **argv)
#define VAR_XPORT_RETRY_TIME
#define DEF_DEF_FILTER_NEXTHOP
#define CA_MAIL_SERVER_SOLITARY
#define QMGR_SCAN_IDX_DEFERRED
#define QMGR_REQ_SCAN_ALL
void qmgr_move(const char *, const char *, time_t)
#define DEF_XPORT_RATE_DELAY
#define VAR_DEST_RATE_DELAY
#define CA_MAIL_SERVER_PRE_ACCEPT(v)
#define DEF_CONC_COHORT_LIM
#define QMGR_REQ_FLUSH_DEAD
#define DEF_DSN_QUEUE_TIME
#define VAR_MIN_BACKOFF_TIME
char * qmgr_scan_next(QMGR_SCAN *)
#define VAR_VERP_BOUNCE_OFF
#define DEF_DEST_RATE_DELAY
#define DEF_MAX_QUEUE_TIME
#define VAR_MAX_QUEUE_TIME
char * var_conc_neg_feedback
#define DEF_DSN_DELAY_CLEARED
#define DEF_QMGR_DAEMON_TIMEOUT
#define CA_MAIL_SERVER_PRE_INIT(v)
void msg_info(const char *fmt,...)
MAIL_VERSION_STAMP_DECLARE