From c3e9ea3409f0e27998452cf05825841af46ac10d Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Mon, 15 Jul 2002 22:44:13 +0000 Subject: Try to get the FQDN from the results of gethostname(). If that fails, then 2002-07-15 Jeffrey Stedfast * camel-mime-utils.c (header_msgid_generate): Try to get the FQDN from the results of gethostname(). If that fails, then fall back to the results gotten from gethostname() or if that fails just use "localhost.localdomain". Addresses bug #17416. (header_decode_param): Protect against a NULL value. svn path=/trunk/; revision=17470 --- camel/ChangeLog | 6 ++++++ camel/camel-mime-utils.c | 29 ++++++++++++++++++++--------- 2 files changed, 26 insertions(+), 9 deletions(-) (limited to 'camel') diff --git a/camel/ChangeLog b/camel/ChangeLog index 0792c232e2..714f8aa6a3 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,5 +1,11 @@ 2002-07-15 Jeffrey Stedfast + * camel-mime-utils.c (header_msgid_generate): Try to get the FQDN + from the results of gethostname(). If that fails, then fall back + to the results gotten from gethostname() or if that fails just use + "localhost.localdomain". Addresses bug #17416. + (header_decode_param): Protect against a NULL value. + * providers/smtp/camel-smtp-transport.c (smtp_data): Get rid of the constant 'required' variable, just use the value when calling set_best_encoding. diff --git a/camel/camel-mime-utils.c b/camel/camel-mime-utils.c index 581fd1bff4..1f3c10cfc6 100644 --- a/camel/camel-mime-utils.c +++ b/camel/camel-mime-utils.c @@ -53,6 +53,7 @@ #include "camel-mime-utils.h" #include "camel-charset-map.h" +#include "camel-service.h" /* for camel_gethostbyname() */ #ifdef ENABLE_THREADS #include @@ -1991,7 +1992,8 @@ header_decode_param (const char **in, char **paramp, char **valuep, int *is_rfc2 gboolean is_rfc2184_encoded = FALSE; gboolean is_rfc2184 = FALSE; const char *inptr = *in; - char *param, *value = NULL; + char *param = NULL; + char *value = NULL; *is_rfc2184_param = FALSE; *rfc2184_part = -1; @@ -2002,7 +2004,7 @@ header_decode_param (const char **in, char **paramp, char **valuep, int *is_rfc2 inptr++; value = header_decode_value (&inptr); - if (is_rfc2184) { + if (value && is_rfc2184) { /* We have ourselves an rfc2184 parameter */ if (*rfc2184_part == -1) { @@ -3699,7 +3701,6 @@ header_raw_clear(struct _header_raw **list) char * header_msgid_generate (void) { - char host[MAXHOSTNAMELEN]; #ifdef ENABLE_THREADS static pthread_mutex_t count_lock = PTHREAD_MUTEX_INITIALIZER; #define COUNT_LOCK() pthread_mutex_lock (&count_lock) @@ -3708,18 +3709,28 @@ header_msgid_generate (void) #define COUNT_LOCK() #define COUNT_UNLOCK() #endif /* ENABLE_THREADS */ + char host[MAXHOSTNAMELEN]; + struct hostent *h = NULL; static int count = 0; - int hrv; - char *ret; + char *msgid; + int retval; - hrv = gethostname (host, sizeof (host)); + retval = gethostname (host, sizeof (host)); + + if (retval == 0 && *host) + h = camel_gethostbyname (host, NULL); + else + host[0] = '\0'; COUNT_LOCK (); - ret = g_strdup_printf ("%d.%d.%d.camel@%s", (gint) time (NULL), getpid (), count++, - (hrv == 0 && host && *host) ? host : "unknown.host"); + msgid = g_strdup_printf ("%d.%d.%d.camel@%s", (int) time (NULL), getpid (), count++, + h ? h->h_name : (*host ? host : "localhost.localdomain")); COUNT_UNLOCK (); - return ret; + if (h) + camel_free_host (h); + + return msgid; } -- cgit v1.2.3