Explorar el Código

fix crash when syncing multiple mailboxes over a Tunnel

Oswald Buddenhagen hace 22 años
padre
commit
dae086c92f
Se han modificado 1 ficheros con 13 adiciones y 2 borrados
  1. 13 2
      src/imap.c

+ 13 - 2
src/imap.c

@@ -855,6 +855,16 @@ imap_connect (config_t * cfg)
   return 0;
   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
 /* `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
  * 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
  * 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)
   if (imap)
   {
   {
     /* determine whether or not we can reuse the existing session */
     /* 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
 	box->port != imap->box->port
 #if HAVE_LIBSSL
 #if HAVE_LIBSSL
 	/* ensure that security requirements are met */
 	/* ensure that security requirements are met */