diff --git a/lib/modules/Protocols.pmod/WebSocket.pmod b/lib/modules/Protocols.pmod/WebSocket.pmod
index 60ca881d9ae2e7ce7ed10a5821867c698731a81e..dc75c3cf629c446e163cc1df0e0e0c1353427cf5 100644
--- a/lib/modules/Protocols.pmod/WebSocket.pmod
+++ b/lib/modules/Protocols.pmod/WebSocket.pmod
@@ -442,10 +442,8 @@ class Request(function(array(string), Request:void) cb) {
     inherit Protocols.HTTP.Server.Request;
 
     protected void parse_request() {
-	if (!cb || !has_index(request_headers, "sec-websocket-key")) {
-	    ::parse_request();
-	    return;
-	} else {
+        ::parse_request();
+	if (cb && has_index(request_headers, "sec-websocket-key")) {
 	    string proto = request_headers["sec-websocket-protocol"];
 	    array(string) protocols =  proto ? proto / ", " : ({});
 #ifdef WEBSOCKET_DEBUG