From 238e75cbd3d144705015f253471dfdaebc50f625 Mon Sep 17 00:00:00 2001 From: erikash Date: Sun, 28 Feb 2016 16:36:19 +0200 Subject: [PATCH] urlencode now handles parse_qs encoding correctly. The autobahn websocket protocol.py line 2487 uses parse_qs(query) which always returns a list as a return value. For example: urllib.parse.parse_qs('room=test') returns {'room': ['test']}. In order to parse it correctly later, doseq for urlencode must be set to True. --- daphne/ws_protocol.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daphne/ws_protocol.py b/daphne/ws_protocol.py index 0a5d013..8d10f0f 100755 --- a/daphne/ws_protocol.py +++ b/daphne/ws_protocol.py @@ -33,7 +33,7 @@ class WebSocketProtocol(WebSocketServerProtocol): clean_headers[name.lower()] = value.encode("latin1") # Reconstruct query string # TODO: get autobahn to provide it raw - query_string = urlencode(request.params).encode("ascii") + query_string = urlencode(request.params, doseq=True).encode("ascii") # Make sending channel self.reply_channel = self.channel_layer.new_channel("!websocket.send.?") # Tell main factory about it