79 static CTABLE *smtpd_resolve_cache;
81 #define STR(x) vstring_str(x)
82 #define SENDER_ADDR_JOIN_CHAR '\n'
86 static void *resolve_pagein(
const char *sender_plus_addr,
void *unused_context)
88 const char myname[] =
"resolve_pagein";
117 msg_panic(
"%s: bad search key: \"%s\"", myname, sender_plus_addr);
131 return ((
void *) reply);
136 static void resolve_pageout(
void *data,
void *unused_context)
153 if (smtpd_resolve_cache)
160 smtpd_resolve_cache =
ctable_create(cache_size, resolve_pagein,
161 resolve_pageout, (
void *) 0);
168 static VSTRING *sender_plus_addr_buf;
173 if (sender_plus_addr_buf == 0)
179 if (smtpd_resolve_cache == 0)
180 msg_panic(
"smtpd_resolve_addr: missing initialization");
#define RESOLVE_NULL_FROM
NORETURN msg_panic(const char *fmt,...)
VSTRING * rewrite_clnt_internal(const char *ruleset, const char *addr, VSTRING *result)
const void * ctable_locate(CTABLE *cache, const char *key)
void resolve_clnt_free(RESOLVE_REPLY *reply)
#define MAIL_ATTR_RWR_LOCAL
VSTRING * vstring_strcpy(VSTRING *vp, const char *src)
#define casefold(dst, src)
void resolve_clnt_init(RESOLVE_REPLY *reply)
CTABLE * ctable_create(ssize_t limit, CTABLE_CREATE_FN create, CTABLE_DELETE_FN delete, void *context)
VSTRING * vstring_alloc(ssize_t len)
void smtpd_resolve_init(int cache_size)
const RESOLVE_REPLY * smtpd_resolve_addr(const char *sender, const char *addr)
VSTRING * vstring_sprintf(VSTRING *vp, const char *format,...)
#define SENDER_ADDR_JOIN_CHAR
char * split_at(char *string, int delimiter)
#define resolve_clnt_query_from(f, a, r)
void ctable_free(CTABLE *cache)
void * mymalloc(ssize_t len)