You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ponymail.apache.org by se...@apache.org on 2017/10/03 14:58:52 UTC
incubator-ponymail git commit: Bug: MboxoReader needs to return all
data for a read() call
Repository: incubator-ponymail
Updated Branches:
refs/heads/master 6768e751e -> 500827ada
Bug: MboxoReader needs to return all data for a read() call
This fixes #415
Project: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/commit/500827ad
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/tree/500827ad
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/diff/500827ad
Branch: refs/heads/master
Commit: 500827ada8e9a4852313749360437c3d1ef2ede1
Parents: 6768e75
Author: Sebb <se...@apache.org>
Authored: Tue Oct 3 15:58:47 2017 +0100
Committer: Sebb <se...@apache.org>
Committed: Tue Oct 3 15:58:47 2017 +0100
----------------------------------------------------------------------
CHANGELOG.md | 1 +
tools/import-mbox.py | 9 +--------
tools/mboxo_patch.py | 10 ++++++----
3 files changed, 8 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ponymail/blob/500827ad/CHANGELOG.md
----------------------------------------------------------------------
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 07620eb..6fbee88 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,5 @@
## CHANGES in 0.10:
+- Bug: MboxoReader needs to return all data for a read() call (#415)
- Bug: import-mbox should not check database during a dry run (#413)
- Archiver loses some message information (#402)
- Mail parsing can change source spacing (#410)
http://git-wip-us.apache.org/repos/asf/incubator-ponymail/blob/500827ad/tools/import-mbox.py
----------------------------------------------------------------------
diff --git a/tools/import-mbox.py b/tools/import-mbox.py
index 9c50100..834a8f4 100755
--- a/tools/import-mbox.py
+++ b/tools/import-mbox.py
@@ -312,14 +312,7 @@ class SlurpThread(Thread):
# so the source agrees with the summary info
if message.__class__.__name__ == 'MboxoFactory':
file=MboxoReader(file)
- # Temporary work-round for #415 until MboxoReader is fixed
- buf=bytearray()
- while True:
- tmp=file.read()
- if len(tmp) <= 0:
- break
- buf.extend(tmp)
- raw_msg=bytes(buf)
+ raw_msg=file.read()
file.close()
if args.dups:
try:
http://git-wip-us.apache.org/repos/asf/incubator-ponymail/blob/500827ad/tools/mboxo_patch.py
----------------------------------------------------------------------
diff --git a/tools/mboxo_patch.py b/tools/mboxo_patch.py
index f1de613..1349e7e 100644
--- a/tools/mboxo_patch.py
+++ b/tools/mboxo_patch.py
@@ -57,14 +57,16 @@ class MboxoReader(mailbox._PartialFile):
# get the next chunk, resetting if necessary
if self.remain != 0:
super().seek(whence=1, offset=-self.remain)
+ # if size is None or negative, then read returns everything.
+ # in which case there is no need to wory about matching across reads
+ limited_read = size and size >= 0
# ensure we get enough to match successfully when refilling
- # size can be None; assume large enough if so
- if size:
- size = size if size > FROM_MANGLED_LEN else FROM_MANGLED_LEN
+ if limited_read and size < FROM_MANGLED_LEN:
+ size = FROM_MANGLED_LEN
bytes = super()._read(size, read_method)
bufflen=len(bytes)
# did we get anything new?
- if bufflen > self.remain:
+ if limited_read and bufflen > self.remain:
# is there a potential cross-boundary match?
if bytes.endswith(FROMS):
# yes, work out what to keep