|
Lines 553-564
Link Here
|
| 553 |
} |
553 |
} |
| 554 |
|
554 |
|
| 555 |
/* Loop through the users list. */ |
555 |
/* Loop through the users list. */ |
| 556 |
for (element = list_getstart(dsnusers); element != NULL; |
556 |
for (element = list_getstart(dsnusers); element != NULL; element = element->nextnode) { |
| 557 |
element = element->nextnode) { |
|
|
| 558 |
struct element *userid_elem; |
557 |
struct element *userid_elem; |
| 559 |
int has_2 = 0, has_4 = 0, has_5 = 0, has_5_2 = 0; |
558 |
int has_2 = 0, has_4 = 0, has_5 = 0, has_5_2 = 0; |
| 560 |
deliver_to_user_t *delivery = |
559 |
deliver_to_user_t *delivery = (deliver_to_user_t *) element->data; |
| 561 |
(deliver_to_user_t *) element->data; |
560 |
dsn_class_t dsn_result; |
| 562 |
|
561 |
|
| 563 |
/* If there was already an error during resolving, |
562 |
/* If there was already an error during resolving, |
| 564 |
* let's skip this delivery. */ |
563 |
* let's skip this delivery. */ |
|
Lines 571-607
Link Here
|
| 571 |
userid_elem != NULL; |
570 |
userid_elem != NULL; |
| 572 |
userid_elem = userid_elem->nextnode) { |
571 |
userid_elem = userid_elem->nextnode) { |
| 573 |
u64_t useridnr = *(u64_t *) userid_elem->data; |
572 |
u64_t useridnr = *(u64_t *) userid_elem->data; |
|
|
573 |
|
| 574 |
trace(TRACE_DEBUG, |
574 |
trace(TRACE_DEBUG, |
| 575 |
"%s, %s: calling sort_and_deliver for useridnr [%llu]", |
575 |
"%s, %s: calling sort_and_deliver for useridnr [%llu]", |
| 576 |
__FILE__, __func__, useridnr); |
576 |
__FILE__, __func__, useridnr); |
| 577 |
|
577 |
|
| 578 |
switch (sort_and_deliver(tmpmsgidnr, |
578 |
dsn_result = sort_and_deliver(tmpmsgidnr, msgsize, useridnr, delivery->mailbox); |
| 579 |
header, headersize, |
579 |
|
| 580 |
msgsize, rfcsize, |
580 |
switch (dsn_result) { |
| 581 |
useridnr, |
581 |
case DSN_CLASS_OK: |
| 582 |
delivery->mailbox)) { |
|
|
| 583 |
case SORT_SUCCESS: |
| 584 |
/* Indicate success. */ |
582 |
/* Indicate success. */ |
| 585 |
trace(TRACE_DEBUG, |
583 |
trace(TRACE_DEBUG, |
| 586 |
"%s, %s: successful sort_and_deliver for useridnr [%llu]", |
584 |
"%s, %s: successful sort_and_deliver for useridnr [%llu]", |
| 587 |
__FILE__, __func__, useridnr); |
585 |
__FILE__, __func__, useridnr); |
| 588 |
has_2 = 1; |
586 |
has_2 = 1; |
| 589 |
break; |
587 |
break; |
| 590 |
case SORT_FAILURE: |
588 |
case DSN_CLASS_FAIL: |
| 591 |
/* Indicate permanent failure. */ |
589 |
/* Indicate permanent failure. */ |
| 592 |
trace(TRACE_ERROR, |
590 |
trace(TRACE_ERROR, |
| 593 |
"%s, %s: permanent failure sort_and_deliver for useridnr [%llu]", |
591 |
"%s, %s: permanent failure sort_and_deliver for useridnr [%llu]", |
| 594 |
__FILE__, __func__, useridnr); |
592 |
__FILE__, __func__, useridnr); |
| 595 |
has_5 = 1; |
593 |
has_5 = 1; |
| 596 |
break; |
594 |
break; |
| 597 |
case SORT_OVER_QUOTA: |
595 |
case DSN_CLASS_QUOTA: |
| 598 |
/* Indicate over quota. */ |
596 |
/* Indicate over quota. */ |
| 599 |
trace(TRACE_ERROR, |
597 |
trace(TRACE_ERROR, |
| 600 |
"%s, %s: temporary failure sort_and_deliver for useridnr [%llu]", |
598 |
"%s, %s: temporary failure sort_and_deliver for useridnr [%llu]", |
| 601 |
__FILE__, __func__, useridnr); |
599 |
__FILE__, __func__, useridnr); |
| 602 |
has_5_2 = 1; |
600 |
has_5_2 = 1; |
| 603 |
break; |
601 |
break; |
| 604 |
case SORT_WEIRD_ERROR: |
602 |
case DSN_CLASS_TEMP: |
| 605 |
default: |
603 |
default: |
| 606 |
/* Assume a temporary failure */ |
604 |
/* Assume a temporary failure */ |
| 607 |
trace(TRACE_ERROR, |
605 |
trace(TRACE_ERROR, |