Package: python-urlgrabber Version: 3.1.0-3 Severity: normal Tags: patch
urlgrabber.keepalive.HTTPHandler don't use Request.get_method() to determine the appropriate HTTP method.
$ cat buggy.py
#!/usr/bin/python
from urllib2 import Request, AbstractHTTPHandler, build_opener
from urlgrabber.keepalive import HTTPHandler as KeepaliveHTTPHandler
class HeadRequest(Request):
def get_method(self):
return 'HEAD'
u2_opener = build_opener()
ka_opener = build_opener(KeepaliveHTTPHandler)
URL = 'http://www.us.debian.org/'
for opener in u2_opener, ka_opener:
print \
[h for h in opener.handlers if isinstance(h, AbstractHTTPHandler)], \
len(opener.open(HeadRequest(URL)).read())
$ python buggy.py
[<urllib2.HTTPHandler instance at 0xb78bfc6c>, <urllib2.HTTPSHandler instance at
0xb78d214c>] 0
[<urllib2.HTTPSHandler instance at 0xb78d23cc>, <urlgrabber.keepalive.HTTPHandler
instance at 0xb78d24cc>] 14213
The attached patch solves this problem.
-- System Information:
Debian Release: lenny/sid
APT prefers testing
APT policy: (900, 'testing'), (600, 'unstable'), (500, 'experimental')
Architecture: i386 (i686)
Kernel: Linux 2.6.21-2-686 (SMP w/1 CPU core)
Locale: LANG=C, LC_CTYPE=pl_PL (charmap=ISO-8859-2)
Shell: /bin/sh linked to /bin/dash
Versions of packages python-urlgrabber depends on:
ii python-support 0.6.4 automated rebuilding support for p
ii python2.4 2.4.4-4 An interactive high-level object-o
python-urlgrabber recommends no packages.
-- no debconf information
--
Jakub Wilk
keepalive.py.diff.gz
Description: Binary data

