--- a/src/bincimapmime/mime-parsefull.cc
+++ b/src/bincimapmime/mime-parsefull.cc
@@ -80,6 +80,35 @@
   size = mimeSource->getOffset();
 }
 
+void Binc::MimeDocument::parseFull(istream& s) const
+{
+  if (allIsParsed)
+    return;
+
+  allIsParsed = true;
+
+  delete mimeSource;
+  mimeSource = new MimeInputSourceStream(s);
+
+  headerstartoffsetcrlf = 0;
+  headerlength = 0;
+  bodystartoffsetcrlf = 0;
+  bodylength = 0;
+  size = 0;
+  messagerfc822 = false;
+  multipart = false;
+
+  int bsize = 0;
+  string bound;
+  MimePart::parseFull(bound, bsize);
+
+  // eat any trailing junk to get the correct size
+  char c;
+  while (mimeSource->getChar(&c));
+
+  size = mimeSource->getOffset();
+}
+
 //------------------------------------------------------------------------
 static bool parseOneHeaderLine(Binc::Header *header, unsigned int *nlines)
 {