From 34be0af5c6225b3dc183ef00b760c016e3c1a9e0 Mon Sep 17 00:00:00 2001 From: sta Date: Sun, 14 Dec 2014 15:34:29 +0900 Subject: [PATCH] Added checking if the handshake response is a Redirect --- websocket-sharp/WebSocket.cs | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/websocket-sharp/WebSocket.cs b/websocket-sharp/WebSocket.cs index ecdaf3ff..f608d311 100644 --- a/websocket-sharp/WebSocket.cs +++ b/websocket-sharp/WebSocket.cs @@ -587,19 +587,21 @@ namespace WebSocketSharp private string checkIfValidHandshakeResponse (HttpResponse response) { var headers = response.Headers; - return response.IsUnauthorized - ? "An HTTP authentication is required." - : !response.IsWebSocketResponse - ? "Not a WebSocket connection response." - : !validateSecWebSocketAcceptHeader (headers["Sec-WebSocket-Accept"]) - ? "Invalid Sec-WebSocket-Accept header." - : !validateSecWebSocketProtocolHeader (headers["Sec-WebSocket-Protocol"]) - ? "Invalid Sec-WebSocket-Protocol header." - : !validateSecWebSocketExtensionsHeader (headers["Sec-WebSocket-Extensions"]) - ? "Invalid Sec-WebSocket-Extensions header." - : !validateSecWebSocketVersionServerHeader (headers["Sec-WebSocket-Version"]) - ? "Invalid Sec-WebSocket-Version header." - : null; + return response.IsRedirect + ? "A Redirect response was received." + : response.IsUnauthorized + ? "An HTTP authentication is required." + : !response.IsWebSocketResponse + ? "Not a WebSocket connection response." + : !validateSecWebSocketAcceptHeader (headers["Sec-WebSocket-Accept"]) + ? "Invalid Sec-WebSocket-Accept header." + : !validateSecWebSocketProtocolHeader (headers["Sec-WebSocket-Protocol"]) + ? "Invalid Sec-WebSocket-Protocol header." + : !validateSecWebSocketExtensionsHeader (headers["Sec-WebSocket-Extensions"]) + ? "Invalid Sec-WebSocket-Extensions header." + : !validateSecWebSocketVersionServerHeader (headers["Sec-WebSocket-Version"]) + ? "Invalid Sec-WebSocket-Version header." + : null; } private string checkIfValidReceivedFrame (WebSocketFrame frame) @@ -1235,6 +1237,13 @@ namespace WebSocketSharp } } + if (res.IsRedirect) { + var url = res.Headers["Location"]; + _logger.Warn ( + String.Format ( + "Received a Redirect response that specifies the Location to '{0}'.", url)); + } + return res; }