[Twisted-Python] Possible bug in twisted/protocols/http.py?
Carl Waldbieser
waldbie at attglobal.net
Sun Dec 7 19:44:26 EST 2003
I am using:
Twisted 1.1.0.
Python 2.3.2
Running on WinXP
I recently set up a wireless network at home (1 WinXP system and 1 Win98
system), and because I have a dial-up connection to the Internet, I wanted
to set up an HTTP proxy sever so both computers could browse the web
simultaneously. I tried a bunch of different free applications that seemed
to fit the bill, but many seemed either too complicated, or easy but just
not configurable enough.
While googling, I came across an old message where someone was very
impressed with how easy it was to create a web proxy using twisted. Since I
am a big Python fan, I thought I'd give it a go. It was remarkably easy to
hack something together, and initially, everything seemed to work pretty
well. However, after browsing one site, I noticed a buch of errors popping
up in my console box. Both seemed to originate from http.py (in
/twisted/protocols directory).
The first (around line 314) was that the StringTransport class was being
asked to make a loseConnection() method invocation, but the class didn't
have one. I seemed to get around that problem by adding that method to the
class as a no-op.
The second (around line 350) was caused by the following statement:
key, val = line.split(': ', 1)
I believe the line has something to do with parsing the request headers.
The problem was that the header was being sent like "name:value" with no
space after the colon. This caused the tuple unpacking to blow up. I
googled for information about what comprises a valid HTTP request, and came
up with the following:
In rfc2616
concerning HTTP/1.1
in section 4.2
Direct quote: "The field value MAY be preceded by any amount of LWS, though
a single SP is preferred."
I have no idea if this is the final word on HTTP headers, but it does look
like maybe the lack of a space should be accepted more gracefully in this
case.
I am not sure if these are actual bugs (the proxy didn't crash in any
event). I thought I ought to let someone, know, though.
Carl Waldbieser
More information about the Twisted-Python
mailing list