Oh, oh. Now that this sits before the insert_messages() call, you are
correct that a good address will be dropped if there is a bad address. The
former behavior was that the good address would receive mail, but the
sender would be told of a failure on account of the bad address.
Good catch. What's your suggestion for fixing it?
Instead of this check before insert_messages, the following should do
the trick:
Index: pipe.c
===================================================================
RCS file: /cvsroot-dbmail/dbmail/pipe.c,v
retrieving revision 1.128.2.2
diff -r1.128.2.2 pipe.c
550a551,554
> /* If there was already an error during resolving,
> let's skip this delivery. */
> if (delivery->dsn.class != DSN_CLASS_OK) continue;
>
This will prevent unnecessary insertion attempts. If a delivery gets
FAIL status during resolving, it won't get overwritten anymore with
TEMP_FAIL in insert_messages. This will cause the call to
dsn_user_worstcase_list in main.c:freeall: to return a correct FAIL.
Best regards,
Michael