if ((pc = imap_get_flags (&(idata->flags), pc)) == NULL)
goto fail;
}
+#ifdef USE_HCACHE
+ /* save UIDVALIDITY for the header cache */
+ else if (ascii_strncasecmp("OK [UIDVALIDITY", pc, 14) == 0)
+ {
+ dprint(2, (debugfile, "Getting mailbox UIDVALIDITY\n"));
+ pc += 3;
+ pc = imap_next_word(pc);
+
+ sscanf(pc, "%u", &(idata->uid_validity));
+ }
+#endif
else
{
pc = imap_next_word (pc);
FREE (&mx.mbox);
return -1;
}
+
+/* reconnect and verify indexes if connection was lost */
+int imap_reconnect(CONTEXT* ctx) {
+ IMAP_DATA* imap_data = (IMAP_DATA *)ctx->data;
+
+ if (imap_data->status == IMAP_CONNECTED)
+ return -1;
+ if (imap_data->status == IMAP_BYE)
+ return 0;
+
+ mutt_socket_close(imap_data->conn);
+
+ if (query_quadoption(OPT_IMAPRECONNECT,_("Connection lost. Reconnect to IMAP server?")) != M_YES)
+ return -1;
+
+ return imap_open_mailbox(ctx);
+}
+