213 #define ABOUNCE_EVENT_ENABLE(fd, callback, context, timeout) do { \
214 event_enable_read((fd), (callback), (context)); \
215 event_request_timer((callback), (context), (timeout)); \
218 #define ABOUNCE_EVENT_DISABLE(fd, callback, context) do { \
219 event_cancel_timer((callback), (context)); \
220 event_disable_readwrite(fd); \
229 #define ABOUNCE_TIMEOUT 1000
233 static void abounce_done(
ABOUNCE *ap,
int status)
237 msg_info(
"%s: status=deferred (%s failed)", ap->
id,
250 static void abounce_event(
int event,
void *context)
264 static void abounce_request_verp(
const char *
class,
const char *service,
265 int command,
int flags,
266 const char *queue,
const char *
id,
267 const char *encoding,
270 const char *dsn_envid,
306 abounce_done(ap, -1);
313 const char *encoding,
int smtputf8,
314 const char *sender,
const char *dsn_envid,
315 int dsn_ret,
const char *verp,
321 sender, dsn_envid, dsn_ret, verp, callback, context);
327 const char *encoding,
int smtputf8,
328 const char *sender,
const char *dsn_envid,
329 int dsn_ret,
const char *verp,
335 sender, dsn_envid, dsn_ret, verp, callback, context);
340 static void abounce_request(
const char *
class,
const char *service,
341 int command,
int flags,
342 const char *queue,
const char *
id,
343 const char *encoding,
int smtputf8,
345 const char *dsn_envid,
int dsn_ret,
377 abounce_done(ap, -1);
384 const char *encoding,
int smtputf8,
385 const char *sender,
const char *dsn_envid,
390 flags, queue,
id, encoding, smtputf8, sender, dsn_envid,
391 dsn_ret, callback, context);
397 const char *encoding,
int smtputf8,
398 const char *sender,
const char *dsn_envid,
399 int dsn_ret,
ABOUNCE_FN callback,
void *context)
403 flags, queue,
id, encoding, smtputf8, sender, dsn_envid,
404 dsn_ret, callback, context);
410 const char *encoding,
int smtputf8,
411 const char *sender,
const char *dsn_envid,
412 int dsn_ret,
ABOUNCE_FN callback,
void *context)
415 flags, queue,
id, encoding, smtputf8, sender, dsn_envid,
416 dsn_ret, callback, context);
422 const char *encoding,
int smtputf8,
423 const char *sender,
const char *dsn_envid,
424 int dsn_ret,
ABOUNCE_FN callback,
void *context)
427 flags, queue,
id, encoding, smtputf8, sender, dsn_envid,
428 dsn_ret, callback, context);
void abounce_flush_verp(int flags, const char *queue, const char *id, const char *encoding, int smtputf8, const char *sender, const char *dsn_envid, int dsn_ret, const char *verp, ABOUNCE_FN callback, void *context)
void abounce_flush(int flags, const char *queue, const char *id, const char *encoding, int smtputf8, const char *sender, const char *dsn_envid, int dsn_ret, ABOUNCE_FN callback, void *context)
VSTREAM * mail_connect_wait(const char *class, const char *name)
char * mystrdup(const char *str)
#define MAIL_ATTR_ENCODING
#define RECV_ATTR_INT(name, val)
void atrace_flush(int flags, const char *queue, const char *id, const char *encoding, int smtputf8, const char *sender, const char *dsn_envid, int dsn_ret, ABOUNCE_FN callback, void *context)
#define ABOUNCE_EVENT_ENABLE(fd, callback, context, timeout)
#define BOUNCE_FLAG_CLEAN
void(* ABOUNCE_FN)(int, void *)
int vstream_fclose(VSTREAM *stream)
#define MAIL_ATTR_SMTPUTF8
#define MAIL_ATTR_DSN_RET
#define ABOUNCE_EVENT_DISABLE(fd, callback, context)
char * var_bounce_service
#define MAIL_ATTR_DSN_ENVID
#define SEND_ATTR_INT(name, val)
int vstream_fflush(VSTREAM *stream)
void adefer_flush(int flags, const char *queue, const char *id, const char *encoding, int smtputf8, const char *sender, const char *dsn_envid, int dsn_ret, ABOUNCE_FN callback, void *context)
#define vstream_fileno(vp)
void adefer_flush_verp(int flags, const char *queue, const char *id, const char *encoding, int smtputf8, const char *sender, const char *dsn_envid, int dsn_ret, const char *verp, ABOUNCE_FN callback, void *context)
#define MAIL_ATTR_QUEUEID
#define BOUNCE_FLAG_DELRCPT
#define SEND_ATTR_STR(name, val)
void adefer_warn(int flags, const char *queue, const char *id, const char *encoding, int smtputf8, const char *sender, const char *dsn_envid, int dsn_ret, ABOUNCE_FN callback, void *context)
#define MAIL_CLASS_PRIVATE
void * mymalloc(ssize_t len)
void msg_info(const char *fmt,...)