Mailing List Archive

dbmail-smtp bug: doesn't handle error from insert message
On Sat, Jan 31, 2004 at 09:32:29PM -0000, Aaron Stone wrote:
> The new delivery chain requires a temporary account with the fixed user id
> number 0. The next release candidate should probably include an appropriate
> insert/update to add this user (note that it needs to be an insert and then an
> update, because the insert alone with '0' triggers the auto_increment.

dbmail-smtp doesn't check the return value from insert_messages and
return EX_TEMPFAIL to the calling process (the mta) so the message just
gets dropped.

here's a patch:

Index: main.c
===================================================================
RCS file: /cvsroot-dbmail/dbmail/main.c,v
retrieving revision 1.43
diff -u -r1.43 main.c
--- main.c 2004/01/30 16:24:35 1.43
+++ main.c 2004/02/01 18:11:12
@@ -190,8 +190,10 @@
}

/* inserting messages into the database */
- insert_messages(stdin, header, headersize, &users, &errusers, &returnpath,
- users_are_usernames, deliver_to_mailbox, &mimelist);
+ if (insert_messages(stdin, header, headersize, &users, &errusers, &returnpath,
+ users_are_usernames, deliver_to_mailbox, &mimelist) == -1) {
+ trace(TRACE_FATAL, "main(): insert_messages failed");
+ }
trace(TRACE_DEBUG,"main(): freeing memory blocks");
my_free(header);
list_freelist(&sysItems.start);


xn
Re: dbmail-smtp bug: doesn't handle error from insert message [ In reply to ]
I'm collecting a fixes patch for my broken stuff, I'll include this tonight,
thanks for bug hunting!

Aaron


"Christian G. Warden" <xndbmail@xerus.org> said:

> On Sat, Jan 31, 2004 at 09:32:29PM -0000, Aaron Stone wrote:
> > The new delivery chain requires a temporary account with the fixed user id
> > number 0. The next release candidate should probably include an appropriate
> > insert/update to add this user (note that it needs to be an insert and then an
> > update, because the insert alone with '0' triggers the auto_increment.
>
> dbmail-smtp doesn't check the return value from insert_messages and
> return EX_TEMPFAIL to the calling process (the mta) so the message just
> gets dropped.
>
> here's a patch:
>
> Index: main.c
> ===================================================================
> RCS file: /cvsroot-dbmail/dbmail/main.c,v
> retrieving revision 1.43
> diff -u -r1.43 main.c
> --- main.c 2004/01/30 16:24:35 1.43
> +++ main.c 2004/02/01 18:11:12
> @@ -190,8 +190,10 @@
> }
>
> /* inserting messages into the database */
> - insert_messages(stdin, header, headersize, &users, &errusers, &returnpath,
> - users_are_usernames, deliver_to_mailbox, &mimelist);
> + if (insert_messages(stdin, header, headersize, &users, &errusers,
&returnpath,
> + users_are_usernames, deliver_to_mailbox, &mimelist) == -1) {
> + trace(TRACE_FATAL, "main(): insert_messages failed");
> + }
> trace(TRACE_DEBUG,"main(): freeing memory blocks");
> my_free(header);
> list_freelist(&sysItems.start);
>
>
> xn
> _______________________________________________
> Dbmail-dev mailing list
> Dbmail-dev@dbmail.org
> http://twister.fastxs.net/mailman/listinfo/dbmail-dev
>



--