Properly quote percent-signs in URLs.
[wrw.git] / wrw / proto.py
index 0e49379..482a23e 100644 (file)
@@ -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):
@@ -103,15 +103,15 @@ def simpleerror(env, startreq, code, title, msg):
     return [buf]
 
 def urlq(url):
-    if isinstance(url, unicode):
+    if isinstance(url, str):
         url = url.encode("utf-8")
     ret = ""
-    invalid = "&=#?/\"'"
+    invalid = b"%;&=#?/\"'"
     for c in url:
-        if c in invalid or (ord(c) <= 32) or (ord(c) >= 128):
-            ret += "%%%02X" % ord(c)
+        if c in invalid or (c <= 32) or (c >= 128):
+            ret += "%%%02X" % c
         else:
-            ret += c
+            ret += chr(c)
     return ret
 
 class urlerror(ValueError):