From 912f43d4570d6342aa7348b1902c0ae29679d756 Mon Sep 17 00:00:00 2001 From: liris Date: Mon, 20 Jun 2011 08:59:45 +0900 Subject: - fixed #4 URL parsing is broken --- websocket.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/websocket.py b/websocket.py index 9d7f2b6..d2608a0 100644 --- a/websocket.py +++ b/websocket.py @@ -69,7 +69,13 @@ def _parse_url(url): parse url and the result is tuple of (hostname, port, resource path and the flag of secure mode) """ - parsed = urlparse(url) + if ":" not in url: + raise ValueError("url is invalid") + + scheme, url = url.split(":", 1) + url = url.rstrip("/") + + parsed = urlparse(url, scheme="http") if parsed.hostname: hostname = parsed.hostname else: @@ -77,25 +83,24 @@ def _parse_url(url): port = 0 if parsed.port: port = parsed.port - + is_secure = False - if parsed.scheme == "ws": + if scheme == "ws": if not port: port = 80 - elif parsed.scheme == "wss": + elif scheme == "wss": is_secure = True if not port: port = 443 else: - raise ValueError("scheme %s is invalid" % parsed.scheme) - + raise ValueError("scheme %s is invalid" % scheme) + if parsed.path: resource = parsed.path else: resource = "/" - - return (hostname, port, resource, is_secure) + return (hostname, port, resource, is_secure) def create_connection(url, timeout=None, **options): """ -- cgit v1.2.1