aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-mime-utils.c
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@ximian.com>2002-07-16 06:44:13 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2002-07-16 06:44:13 +0800
commitc3e9ea3409f0e27998452cf05825841af46ac10d (patch)
tree9d068faa24ace52827ec087f69afc701b1d212fe /camel/camel-mime-utils.c
parent657d503f0b5e7ed268b99b70a7769fbd72543550 (diff)
downloadgsoc2013-evolution-c3e9ea3409f0e27998452cf05825841af46ac10d.tar
gsoc2013-evolution-c3e9ea3409f0e27998452cf05825841af46ac10d.tar.gz
gsoc2013-evolution-c3e9ea3409f0e27998452cf05825841af46ac10d.tar.bz2
gsoc2013-evolution-c3e9ea3409f0e27998452cf05825841af46ac10d.tar.lz
gsoc2013-evolution-c3e9ea3409f0e27998452cf05825841af46ac10d.tar.xz
gsoc2013-evolution-c3e9ea3409f0e27998452cf05825841af46ac10d.tar.zst
gsoc2013-evolution-c3e9ea3409f0e27998452cf05825841af46ac10d.zip
Try to get the FQDN from the results of gethostname(). If that fails, then
2002-07-15 Jeffrey Stedfast <fejj@ximian.com> * 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
Diffstat (limited to 'camel/camel-mime-utils.c')
-rw-r--r--camel/camel-mime-utils.c29
1 files changed, 20 insertions, 9 deletions
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 <pthread.h>
@@ -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;
}