This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author matejcik
Recipients matejcik
Date 2009-01-23.17:06:59
SpamBayes Score 4.7894133e-07
Marked as misclassified No
Message-id <1232730438.9.0.904675957675.issue5038@psf.upfronthosting.co.za>
In-reply-to
Content
since 2.6 httplib supports reading from file-like objects.

Now consider the following situation:
There are two handlers in urrlib2, first is plain http, second is basic
auth.
I want to POST a file to a service, and pass the open file object as
data parameter to urllib2.urlopen.
First handler is invoked, it sends the file data, but gets 401
Unauthorized return code and fails with that.
Second handler in chain is invoked (at least that's how i understand
urrlib2, please correct me if i'm talking rubbish). At that point the
open file is at EOF, so empty data is sent.

furthermore, the obvious solution "you can't do this through urllib so
go read the file yourself" doesn't apply that well - the file object in
question is actually a mmap.mmap instance.
This code is in production since python 2.4. Until file object support
in httplib was introduced, it worked fine, handling the mmap'ed file as
a string. Now it is picked up as read()-able and this problem occurs.
Only workaround to restore pre-2.6 behavior that comes to mind is
building a wrapper class for the mmap object that hides its read() method.
History
Date User Action Args
2009-01-23 17:07:19matejciksetrecipients: + matejcik
2009-01-23 17:07:18matejciksetmessageid: <1232730438.9.0.904675957675.issue5038@psf.upfronthosting.co.za>
2009-01-23 17:07:02matejciklinkissue5038 messages
2009-01-23 17:07:00matejcikcreate