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;
     }