if (cache->path)
{
- if (cache->uid == HEADER_DATA(h)->uid)
- {
- /* yes, so just return a pointer to the message */
- if (!(msg->fp = fopen (cache->path, "r")))
- {
- mutt_perror (cache->path);
- return (-1);
- }
+ /* don't treat cache errors as fatal, just fall back. */
+ if (cache->uid == HEADER_DATA(h)->uid &&
+ (msg->fp = fopen (cache->path, "r")))
return 0;
- }
else
{
- /* clear the previous entry */
unlink (cache->path);
FREE (&cache->path);
}
/* see comment before command start. */
h->active = 1;
+ fflush (msg->fp);
+ if (ferror (msg->fp))
+ {
+ mutt_perror (cache->path);
+ goto bail;
+ }
+
if (rc != IMAP_CMD_OK)
goto bail;