* Exim - an Internet mail transport agent *
*************************************************/
-/* Copyright (c) The Exim Maintainers 2020 - 2022 */
+/* Copyright (c) The Exim Maintainers 2020 - 2023 */
/* Copyright (c) University of Cambridge 1995 - 2018 */
/* See the file NOTICE for conditions of use and distribution. */
-/* SPDX-License-Identifier: GPL-2.0-only */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/* Definitions of various structures. In addition, those that are visible for
uschar *expand_multi_domain; /* ) */
BOOL multi_domain; /* ) */
BOOL overrides_hosts; /* ) Used only for remote transports */
- int max_addresses; /* ) */
+ uschar *max_addresses; /* ) */
int connection_max_messages;/* ) */
/**************************************/
BOOL deliver_as_creator; /* Used only by pipe at present */
/* Structure for chaining together arbitrary strings. */
typedef struct string_item {
- struct string_item *next;
- uschar *text;
+ struct string_item * next;
+ uschar * text;
} string_item;
/* Information about a soft delivery failure, for use when calculating
typedef struct retry_item {
struct retry_item *next; /* for chaining */
- uschar *key; /* string identifying host/address/message */
+ const uschar *key; /* string identifying host/address/message */
int basic_errno; /* error code for this destination */
int more_errno; /* additional error information */
uschar *message; /* local error message */
uschar *address_data; /* arbitrary data to keep with the address */
uschar *domain_data; /* from "domains" lookup */
uschar *localpart_data; /* from "local_parts" lookup */
- uschar *errors_address; /* where to send errors (NULL => sender) */
+ const uschar *errors_address; /* where to send errors (NULL => sender) */
header_line *extra_headers; /* additional headers */
uschar *remove_headers; /* list of those to remove */
void *variables; /* router-vasriables */
reply_item *reply; /* data for autoreply */
retry_item *retries; /* chain of retry information */
- uschar *address; /* address being delivered or routed */
+ const uschar *address; /* address being delivered or routed */
uschar *unique; /* used for disambiguating */
- uschar *cc_local_part; /* caseful local part */
- uschar *lc_local_part; /* lowercased local part */
- uschar *local_part; /* points to cc or lc version */
- uschar *prefix; /* stripped prefix of local part */
- uschar *prefix_v; /* variable part of above */
- uschar *suffix; /* stripped suffix of local part */
- uschar *suffix_v; /* variable part of above */
+ const uschar *cc_local_part; /* caseful local part */
+ const uschar *lc_local_part; /* lowercased local part */
+ const uschar *local_part; /* points to cc or lc version */
+ const uschar *prefix; /* stripped prefix of local part */
+ const uschar *prefix_v; /* variable part of above */
+ const uschar *suffix; /* stripped suffix of local part */
+ const uschar *suffix_v; /* variable part of above */
const uschar *domain; /* working domain (lower cased) */
uschar *address_retry_key; /* retry key including full address */
uschar *message; /* error message */
uschar *user_message; /* error message that can be sent over SMTP
or quoted in bounce message */
- uschar *onetime_parent; /* saved original parent for onetime */
+ const uschar *onetime_parent; /* saved original parent for onetime */
uschar **pipe_expandn; /* numeric expansions for pipe from filter */
uschar *return_filename; /* name of return file */
uschar *self_hostname; /* after self=pass */
uschar *shadow_message; /* info about shadow transporting */
+ uid_t uid; /* uid for transporting */
+ gid_t gid; /* gid for transporting */
+
#ifndef DISABLE_TLS
const uschar *tlsver; /* version used for transport */
uschar *cipher; /* Cipher used for transport */
int dsn_flags; /* DSN flags */
int dsn_aware; /* DSN aware flag */
- uid_t uid; /* uid for transporting */
- gid_t gid; /* gid for transporting */
-
+#ifndef DISABLE_DKIM
+ const uschar * dkim_used; /* DKIM info, or NULL */
+#endif
/* flags */
struct {
BOOL af_allow_file:1; /* allow file in generated address */
#endif
};
+
+/* per-queue-runner info */
+typedef struct qrunner {
+ struct qrunner * next; /* list sorted by next tick */
+
+ uschar * name; /* NULL for the default queue */
+ unsigned interval; /* tick rate, seconds. Zero for a one-time run */
+ time_t next_tick; /* next run should, or should have, start(ed) */
+ unsigned run_max; /* concurrent queue runner limit */
+ unsigned run_count; /* current runners */
+
+ BOOL queue_run_force :1;
+ BOOL deliver_force_thaw :1;
+ BOOL queue_run_first_delivery :1;
+ BOOL queue_run_local :1;
+ BOOL queue_2stage :1;
+} qrunner;
+
/* End of structs.h */