• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.9.5/postfix-252/postfix/src/oqmgr/

Lines Matching refs:message

15 /*	int	qmgr_active_done(message)
16 /* QMGR_MESSAGE *message;
18 /* These functions maintain the active message queue: the set
24 /* Damaged message files are saved to the "corrupt" directory.
26 /* qmgr_active_feed() inserts the named message file into
39 /* a message via it. Message delivery is asynchronous, too.
41 /* qmgr_active_done() deals with a message after delivery
42 /* has been tried for all in-core recipients. If the message
43 /* was bounced, a bounce message is sent to the sender, or
49 /* if at least one delivery failed, the message is moved
54 /* message was queued (per-message exponential backoff), or are set
62 /* Warnings: corrupt message file. A corrupt message is saved
169 /* qmgr_active_feed - feed one message into active queue */
174 QMGR_MESSAGE *message;
205 * Move the message to the active queue. File access errors are fatal.
220 * message.
232 if ((message = qmgr_message_alloc(MAIL_QUEUE_ACTIVE, queue_id,
241 } else if (message == QMGR_MESSAGE_LOCKED) {
250 if (message->refcount == 0)
251 qmgr_active_done(message);
256 /* qmgr_active_done - dispose of message after recipients have been tried */
258 void qmgr_active_done(QMGR_MESSAGE *message)
264 msg_info("%s: %s", myname, message->queue_id);
267 * During a previous iteration, an attempt to bounce this message may
278 * failed, and the delivery agent will have requested that the message be
286 if (stat(mail_queue_path((VSTRING *) 0, MAIL_QUEUE_BOUNCE, message->queue_id), &st) == 0) {
288 if (mail_queue_remove(MAIL_QUEUE_BOUNCE, message->queue_id))
290 MAIL_QUEUE_BOUNCE, message->queue_id);
293 msg_info("%s: bounce %s", myname, message->queue_id);
294 if (message->verp_delims == 0 || var_verp_bounce_off)
296 message->queue_name,
297 message->queue_id,
298 message->encoding,
299 message->sender,
300 message->dsn_envid,
301 message->dsn_ret,
303 (char *) message);
306 message->queue_name,
307 message->queue_id,
308 message->encoding,
309 message->sender,
310 message->dsn_envid,
311 message->dsn_ret,
312 message->verp_delims,
314 (char *) message);
322 qmgr_active_done_2_generic(message);
329 QMGR_MESSAGE *message = (QMGR_MESSAGE *) context;
334 message->flags |= status;
335 qmgr_active_done_2_generic(message);
340 static void qmgr_active_done_2_generic(QMGR_MESSAGE *message)
349 if (message->flags
350 && mail_open_ok(MAIL_QUEUE_ACTIVE, message->queue_id, &st, &path) == MAIL_OPEN_NO) {
351 qmgr_active_corrupt(message->queue_id);
352 qmgr_message_free(message);
364 if (message->rcpt_offset > 0) {
365 if (qmgr_message_realloc(message) == 0) {
366 qmgr_active_corrupt(message->queue_id);
367 qmgr_message_free(message);
369 if (message->refcount == 0)
370 qmgr_active_done(message); /* recurse for consistency */
386 if ((message->tflags & (DEL_REQ_FLAG_USR_VRFY | DEL_REQ_FLAG_RECORD))
387 || (message->rflags & QMGR_READ_FLAG_NOTIFY_SUCCESS)) {
388 atrace_flush(message->tflags,
389 message->queue_name,
390 message->queue_id,
391 message->encoding,
392 message->sender,
393 message->dsn_envid,
394 message->dsn_ret,
396 (char *) message);
403 qmgr_active_done_25_generic(message);
410 QMGR_MESSAGE *message = (QMGR_MESSAGE *) context;
415 if (status == 0 && message->tflags_offset)
416 qmgr_message_kill_record(message, message->tflags_offset);
417 message->flags |= status;
418 qmgr_active_done_25_generic(message);
423 static void qmgr_active_done_25_generic(QMGR_MESSAGE *message)
428 * If we get to this point we have tried all recipients for this message.
429 * If the message is too old, try to bounce it.
434 if (message->flags) {
435 if (event_time() >= message->create_time +
436 (*message->sender ? var_max_queue_time : var_dsn_queue_time)) {
438 message->queue_id, message->sender);
439 if (message->verp_delims == 0 || var_verp_bounce_off)
441 message->queue_name,
442 message->queue_id,
443 message->encoding,
444 message->sender,
445 message->dsn_envid,
446 message->dsn_ret,
448 (char *) message);
451 message->queue_name,
452 message->queue_id,
453 message->encoding,
454 message->sender,
455 message->dsn_envid,
456 message->dsn_ret,
457 message->verp_delims,
459 (char *) message);
461 } else if (message->warn_time > 0
462 && event_time() >= message->warn_time - 1) {
464 msg_info("%s: sending defer warning for %s", myname, message->queue_id);
466 message->queue_name,
467 message->queue_id,
468 message->encoding,
469 message->sender,
470 message->dsn_envid,
471 message->dsn_ret,
473 (char *) message);
481 qmgr_active_done_3_generic(message);
488 QMGR_MESSAGE *message = (QMGR_MESSAGE *) context;
494 qmgr_message_update_warn(message);
495 qmgr_active_done_3_generic(message);
502 QMGR_MESSAGE *message = (QMGR_MESSAGE *) context;
507 message->flags = status;
508 qmgr_active_done_3_generic(message);
513 static void qmgr_active_done_3_generic(QMGR_MESSAGE *message)
520 * stamps into the future by the amount of time that the message is
521 * delayed, and move the message to the deferred queue. Impose minimal
529 if (message->flags) {
530 if (message->create_time > 0) {
531 delay = event_time() - message->create_time;
539 qmgr_active_defer(message->queue_name, message->queue_id,
547 if (mail_queue_remove(message->queue_name, message->queue_id)) {
550 message->queue_id, message->queue_name);
552 message->queue_id, message->queue_name);
555 msg_info("%s: removed", message->queue_id);
560 * Finally, delete the in-core message structure.
562 qmgr_message_free(message);