+ if (data != NULL && !ret && lastchanged.st_mtime <= when->tv_sec)
+ {
+ p->h = mutt_hcache_restore ((unsigned char *)data, &p->h);
+ maildir_parse_flags (p->h, fn);
+ } else
+#endif
+ if (maildir_parse_message (ctx->magic, fn, p->h->old, p->h))
+ {
+ p->header_parsed = 1;
+ maildir_parse_flags (p->h, fn);
+#if USE_HCACHE
+ mutt_hcache_store (hc, p->h->path + 3, p->h, 0, &maildir_hcache_keylen);
+#endif
+ } else
+ mutt_free_header (&p->h);
+#if USE_HCACHE
+ FREE(&data);
+#endif
+ }
+#if USE_HCACHE
+ mutt_hcache_close (hc);
+#endif
+}