Index: camel/providers/local/camel-mbox-summary.c
===================================================================
--- camel/providers/local/camel-mbox-summary.c	(revision 8350)
+++ camel/providers/local/camel-mbox-summary.c	(working copy)
@@ -914,7 +914,7 @@
 	char statnew[8], xstatnew[8];
 #endif
 
-	d(printf("performing full summary/sync\n"));
+	printf("performing full summary/sync\n");
 
 	/* need to dup this because the mime-parser owns the fd after we give it to it */
 	fd = dup(fd);
@@ -949,10 +949,63 @@
 		}
 
 		if (camel_mime_parser_step(mp, &buffer, &len) != CAMEL_MIME_PARSER_STATE_FROM) {
-			g_warning("Expected a From line here, didn't get it");
-			camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
-					     _("Summary and folder mismatch, even after a sync"));
+			g_warning("Expected a From line here, didn't get it. SO recovering....\n");
+			/*camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
+					     _("Summary and folder mismatch, even after a sync"));*/
+
+			/* README: ALOUD: Read the .mbox file here and parse the From locations 
+			   Update the summary file with these From locations.
+			   This following code segment should become a local func. and used 
+			   everywhere we get the mismatch-exception (sync_quick) */
+
+			int mbox_fd;
+			long frompos;
+			char *subject;
+			int state;
+
+			int hits = 0, total = 0;
+			CamelMimeParser *parser;
+			mbox_fd = g_open(((CamelLocalSummary *)s)->folder_path, O_LARGEFILE | O_RDONLY | O_BINARY, 0);
+			if (mbox_fd == -1) {
+				camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
+						_("Folder %s cannot be opened\n  %s"),
+						((CamelLocalSummary *)s)->folder_path, g_strerror (errno));
+				return -1;
+			} else
+			printf ("\n\aFolder %s opened succesfully \n\a", ((CamelLocalSummary *)s)->folder_path);
+
+			parser = camel_mime_parser_new();
+			camel_mime_parser_init_with_fd(parser, mbox_fd);
+			camel_mime_parser_scan_from(parser, TRUE);
+
+			while ( (state = camel_mime_parser_step(parser, NULL, NULL) ) != CAMEL_MIME_PARSER_STATE_EOF) {
+
+				if (state == CAMEL_MIME_PARSER_STATE_FROM) {
+					frompos = camel_mime_parser_tell_start_from (parser);
+					camel_mime_parser_step (parser, NULL, NULL);
+					subject = camel_mime_parser_header (parser, "subject", NULL);
+
+					/* Don't try printing subjects in a billion mails folder */
+					d(printf("Message @ %ld, Subject: %s\n", (long)frompos, subject));
+
+					info = (CamelMboxMessageInfo *)camel_folder_summary_index(s, hits);
+					if (info) {
+						info->frompos = frompos;
+						camel_message_info_free((CamelMessageInfo *)info);
+					}
+					hits ++;
+				} 
+				total ++;
+			}
+
+			printf ("\n\aUpdated summary of %d items out of %d parses\n\a", hits, total);
+			camel_object_unref(parser);
+			close (fd);
+			camel_folder_summary_touch(s);
+			camel_folder_summary_save (s);
+			//return camel_mbox_summary_sync (s, flags, changeinfo, fd, fdout, ex);
 			goto error;
+
 		}
 
 		if (camel_mime_parser_tell_start_from(mp) != info->frompos) {
