aboutsummaryrefslogtreecommitdiffstats
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
parent657d503f0b5e7ed268b99b70a7769fbd72543550 (diff)
downloadgsoc2013-evolution-c3e9ea3409f0e27998452cf05825841af46ac10d.tar.gz
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
-rw-r--r--camel/ChangeLog6
-rw-r--r--camel/camel-mime-utils.c29
2 files changed, 26 insertions, 9 deletions
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 <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.
+
* 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 <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;
}