diff --git a/lib/modules/Protocols.pmod/WebSocket.pmod b/lib/modules/Protocols.pmod/WebSocket.pmod index 113f250d25909e841dbfa499ef0bfd41dc63cc99..914efd2a2d4af1f891a2713c29dffdb5cc5b1216 100644 --- a/lib/modules/Protocols.pmod/WebSocket.pmod +++ b/lib/modules/Protocols.pmod/WebSocket.pmod @@ -585,9 +585,13 @@ class Connection { class Request(function(array(string), Request:void) cb) { inherit Protocols.HTTP.Server.Request; - protected void parse_request() { - ::parse_request(); - if (cb && has_index(request_headers, "sec-websocket-key")) { + protected int parse_variables() { + if (!has_index(request_headers, "sec-websocket-key")) + return ::parse_variables(); + if (query!="") + .HTTP.Server.http_decode_urlencoded_query(query,variables); + flatten_headers(); + if (cb) { string proto = request_headers["sec-websocket-protocol"]; array(string) protocols = proto ? proto / ", " : ({}); #ifdef WEBSOCKET_DEBUG @@ -595,14 +599,6 @@ class Request(function(array(string), Request:void) cb) { #endif cb(protocols, this); } - } - - protected int parse_variables() { - if (!has_index(request_headers, "sec-websocket-key")) - return ::parse_variables(); - if (query!="") - .HTTP.Server.http_decode_urlencoded_query(query,variables); - flatten_headers(); return 0; }