X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fnotify_email.c;h=76d48d445825c83834d93095ed35420ce288b7d1;hb=e0e307657d6b751d6beb5afb92c9359a6df7f5e8;hp=10d5ab1bd0683abdaf27872a97dd24031347ab73;hpb=a12cb627513a24de25401d3e0e29763db724bf5c;p=collectd.git diff --git a/src/notify_email.c b/src/notify_email.c index 10d5ab1b..76d48d44 100644 --- a/src/notify_email.c +++ b/src/notify_email.c @@ -228,8 +228,8 @@ static int notify_email_config (const char *key, const char *value) static int notify_email_notification (const notification_t *n, user_data_t __attribute__((unused)) *user_data) { - smtp_recipient_t recipient; + time_t tt; struct tm timestamp_tm; char timestamp_str[64]; @@ -249,7 +249,8 @@ static int notify_email_notification (const notification_t *n, (email_subject == NULL) ? DEFAULT_SMTP_SUBJECT : email_subject, severity, n->host); - localtime_r (&n->time, ×tamp_tm); + tt = CDTIME_T_TO_TIME_T (n->time); + localtime_r (&tt, ×tamp_tm); strftime (timestamp_str, sizeof (timestamp_str), "%Y-%m-%d %H:%M:%S", ×tamp_tm); timestamp_str[sizeof (timestamp_str) - 1] = '\0'; @@ -257,7 +258,7 @@ static int notify_email_notification (const notification_t *n, /* Let's make RFC822 message text with \r\n EOLs */ ssnprintf (buf, buf_len, "MIME-Version: 1.0\r\n" - "Content-Type: text/plain;\r\n" + "Content-Type: text/plain; charset=\"US-ASCII\"\r\n" "Content-Transfer-Encoding: 8bit\r\n" "Subject: %s\r\n" "\r\n" @@ -272,6 +273,12 @@ static int notify_email_notification (const notification_t *n, pthread_mutex_lock (&session_lock); + if (session == NULL) { + /* Initialization failed or we're in the process of shutting down. */ + pthread_mutex_unlock (&session_lock); + return (-1); + } + if (!(message = smtp_add_message (session))) { pthread_mutex_unlock (&session_lock); ERROR ("notify_email plugin: cannot set SMTP message"); @@ -282,21 +289,22 @@ static int notify_email_notification (const notification_t *n, smtp_set_message_str (message, buf); for (i = 0; i < recipients_len; i++) - recipient = smtp_add_recipient (message, recipients[i]); + smtp_add_recipient (message, recipients[i]); /* Initiate a connection to the SMTP server and transfer the message. */ if (!smtp_start_session (session)) { - char buf[MAXSTRING]; ERROR ("notify_email plugin: SMTP server problem: %s", smtp_strerror (smtp_errno (), buf, sizeof buf)); pthread_mutex_unlock (&session_lock); return (-1); } else { + #if COLLECT_DEBUG const smtp_status_t *status; /* Report on the success or otherwise of the mail transfer. */ status = smtp_message_transfer_status (message); DEBUG ("notify_email plugin: SMTP server report: %d %s", - status->code, (status->text != NULL) ? status->text : "\n"); + status->code, (status->text != NULL) ? status->text : "\n"); + #endif smtp_enumerate_recipients (message, print_recipient_status, NULL); }