summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
b3e598b)
The conversion is rather annoying, and not especially efficient, but it
does the job. In particular, it works better than leaving the URL as
`str', because that results in a `TypeError' later.
Signed-off-by: Mark Wooding <mdw@distorted.org.uk>
import twisted.web
import twisted.web.client
import twisted.web
import twisted.web.client
+def encode_url(urlstr):
+ # Oh, this is a disaster. We're given a URL as a `str', but the underlying
+ # machinery insists on having `bytes'. Assume we've been given a sensible
+ # URL, with escaping in all of the necessary places, except that it may
+ # contain non-ASCII characters: then encode as UTF-8 and squash the top-
+ # bit-set bytes down to percent escapes.
+ #
+ # This conses like it's going out of fashion, but it gets the job done.
+ return b''.join(bytes([b]) if b < 128 else '%%%02X' % b
+ for b in urlstr.encode('utf-8'))
+
def process_cfg(_opts, putative_servers, putative_clients):
global clients
def process_cfg(_opts, putative_servers, putative_clients):
global clients
try: c.ifname = srch(cfg_get_raw, 'ifname_client')
except NoOptionError: pass
try: c.ifname = srch(cfg_get_raw, 'ifname_client')
except NoOptionError: pass
- try: c.url = srch(cfg.get,'url')
+ try: c.url = encode_url(srch(cfg.get,'url'))
except NoOptionError:
cfg_process_saddrs(c, ss)
c.url = c.saddrs[0].url()
except NoOptionError:
cfg_process_saddrs(c, ss)
c.url = c.saddrs[0].url()