*
* srvx is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
void
mail_send(struct userNode *from, struct handle_info *to, const char *subject, const char *body, int first_time)
{
+ struct sigaction sv;
pid_t child;
int infds[2], outfds[2];
- const char *fromaddr, *str;
+ const char *fromaddr;
+ const char *str;
/* Grab some config items first. */
str = conf_get_data("mail/enable", RECDB_QSTRING);
} else if (child > 0) {
return;
}
+ /* Reset the SIGCHLD signal handler to the default. */
+ memset(&sv, 0, sizeof(sv));
+ sigemptyset(&sv.sa_mask);
+ sv.sa_handler = SIG_DFL;
+ sigaction(SIGCHLD, &sv, NULL);
/* We're in a child now; must _exit() to die properly. */
if (pipe(infds) < 0) {
log_module(MAIN_LOG, LOG_ERROR, "sendmail() child to %s couldn't pipe(infds): %s (%d)", to->email_addr, strerror(errno), errno);
close(infds[0]);
close(outfds[1]);
- /* Do we have any "extra" headers to send? */
- extras = conf_get_data("mail/extra_headers", RECDB_STRING_LIST);
- if (extras) {
- for (nn=0; nn<extras->used; nn++) {
- fputs(extras->list[nn], out);
- fputs("\n", out);
- }
- }
-
/* Content type? (format=flowed is a standard for plain text
* that lets the receiver reconstruct paragraphs, defined in
* RFC 2646. See comment above send_flowed_text() for more.)
fprintf(out, "To: \"%s\" <%s>\n", to->handle, to->email_addr);
fprintf(out, "Subject: %s\n", subject);
+ /* Do we have any "extra" headers to send? */
+ extras = conf_get_data("mail/extra_headers", RECDB_STRING_LIST);
+ if (extras) {
+ for (nn=0; nn<extras->used; nn++) {
+ fputs(extras->list[nn], out);
+ fputs("\n", out);
+ }
+ }
+
/* Send mail body */
fputs("\n", out); /* terminate headers */
extras = conf_get_data((first_time?"mail/body_prefix_first":"mail/body_prefix"), RECDB_STRING_LIST);