[ python-Bugs-1076485 ] Another message that croaks email.FeedParser

SourceForge.net noreply at sourceforge.net
Sun Dec 5 04:30:24 CET 2004


Bugs item #1076485, was opened at 2004-11-30 23:00
Message generated for change (Comment added) made by bwarsaw
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1076485&group_id=5470

Category: Python Library
>Group: Python 2.4
>Status: Closed
>Resolution: Fixed
Priority: 5
Submitted By: Skip Montanaro (montanaro)
Assigned to: Barry A. Warsaw (bwarsaw)
Summary: Another message that croaks email.FeedParser

Initial Comment:
The attached message causes a TypeError exception with the
email.FeedParser class that comes with Python 2.4.  The
traceback
I get is:

Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/Users/skip/local/lib/python2.4/mailbox.py",
line 35, in next
    return self.factory(_Subfile(self.fp, start, stop))
  File
"/Users/skip/local/lib/python2.4/site-packages/spambayes/mboxutils.py",
line 129, in get_message
    msg = email.message_from_string(obj)
  File
"/Users/skip/local/lib/python2.4/email/__init__.py",
line 43, in message_from_string
    return Parser(*args, **kws).parsestr(s)
  File
"/Users/skip/local/lib/python2.4/email/Parser.py", line
79, in parsestr
    return self.parse(StringIO(text),
headersonly=headersonly)
  File
"/Users/skip/local/lib/python2.4/email/Parser.py", line
68, in parse
    feedparser.feed(data)
  File
"/Users/skip/local/lib/python2.4/email/FeedParser.py",
line 146, in feed
    self._call_parse()
  File
"/Users/skip/local/lib/python2.4/email/FeedParser.py",
line 150, in _call_parse
    self._parse()
  File
"/Users/skip/local/lib/python2.4/email/FeedParser.py",
line 331, in _parsegen
    for retval in self._parsegen():
  File
"/Users/skip/local/lib/python2.4/email/FeedParser.py",
line 228, in _parsegen
    for retval in self._parsegen():
  File
"/Users/skip/local/lib/python2.4/email/FeedParser.py",
line 190, in _parsegen
    for line in self._input:
  File
"/Users/skip/local/lib/python2.4/email/FeedParser.py",
line 119, in next
    line = self.readline()
  File
"/Users/skip/local/lib/python2.4/email/FeedParser.py",
line 79, in readline
    if ateof(line):
TypeError: expected string or buffer


----------------------------------------------------------------------

>Comment By: Barry A. Warsaw (bwarsaw)
Date: 2004-12-04 22:30

Message:
Logged In: YES 
user_id=12800

I have a fix for this which I'll commit to the CVS head and
release24-maint.  The problem is caused by a place where
readline() could have returned NeedsMoreData, but that case
wasn't being checked.  If you use email.message_from_*, that
uses the Parser interface, which reads the text in 8192 byte
chunks.  The test message just happens to have the first
8192 chunk fall inside a line in the
message/delivery-status, which was the block that had the
readline() that failed to check for NeedsMoreData.

BTW, you can work around this by using the FeedParser
interface directly, since that doesn't chunk the input.


----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1076485&group_id=5470


More information about the Python-bugs-list mailing list