X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=wrw%2Fproto.py;h=3dcf0d7a31d4c4ae8ab26c90a4db68c4df193427;hb=0d4c1b8b8da9e20c4bc9fb41ff1136283821b98e;hp=96a88781ba5e7eda8267ae100ad17fc41e5e65f9;hpb=d38b200493b3ed263dbf10581d6d204462ed68c4;p=wrw.git diff --git a/wrw/proto.py b/wrw/proto.py index 96a8878..3dcf0d7 100644 --- a/wrw/proto.py +++ b/wrw/proto.py @@ -1,4 +1,4 @@ -import time +import time, calendar statusinfo = { 400: ("Bad Request", "Invalid HTTP request."), @@ -21,7 +21,7 @@ def phttpdate(dstr): return None tz = int(tz[1:]) tz = (((tz / 100) * 60) + (tz % 100)) * 60 - return time.mktime(time.strptime(dstr, "%a, %d %b %Y %H:%M:%S")) - tz - time.altzone + return calendar.timegm(time.strptime(dstr, "%a, %d %b %Y %H:%M:%S")) - tz def pmimehead(hstr): def pws(p): @@ -98,15 +98,16 @@ def simpleerror(env, startreq, code, title, msg): """ % (title, title, htmlq(msg)) - buf = buf.encode("us-ascii") startreq("%i %s" % (code, title), [("Content-Type", "text/html"), ("Content-Length", str(len(buf)))]) return [buf] def urlq(url): + if isinstance(url, unicode): + url = url.encode("utf-8") ret = "" invalid = "&=#?/\"'" for c in url: - if c in invalid or (ord(c) <= 32): + if c in invalid or (ord(c) <= 32) or (ord(c) >= 128): ret += "%%%02X" % ord(c) else: ret += c