Bläddra i källkod

fix crash when syncing multiple mailboxes over a Tunnel

Oswald Buddenhagen 22 år sedan
förälder
incheckning
dae086c92f
1 ändrade filer med 13 tillägg och 2 borttagningar
  1. 13 2
      src/imap.c

+ 13 - 2
src/imap.c

@@ -855,6 +855,16 @@ imap_connect (config_t * cfg)
   return 0;
 }
 
+static int
+mstrcmp (const char *s1, const char *s2)
+{
+  if (s1 == s2)
+    return 0;
+  if (!s1 || !s2)
+    return 1;
+  return strcmp (s1, s2);
+}
+
 /* `box' is the config info for the maildrop to sync.  `minuid' is the
  * minimum UID to consider.  in normal mode this will be 1, but in --fast
  * mode we only fetch messages newer than the last one seen in the local
@@ -866,8 +876,9 @@ imap_open (config_t * box, unsigned int minuid, imap_t * imap, int imap_create)
   if (imap)
   {
     /* determine whether or not we can reuse the existing session */
-    if (strcmp (box->host, imap->box->host) ||
-	strcmp (box->user, imap->box->user) ||
+    if (mstrcmp (box->tunnel, imap->box->tunnel) ||
+	mstrcmp (box->host, imap->box->host) ||
+	mstrcmp (box->user, imap->box->user) ||
 	box->port != imap->box->port
 #if HAVE_LIBSSL
 	/* ensure that security requirements are met */