From fa01992fa1d8d196f3058cb1919694ce8c3cf9fe Mon Sep 17 00:00:00 2001 From: sta Date: Mon, 2 Jun 2014 15:33:25 +0900 Subject: [PATCH] Get the value once for IsWebSocketRequest property --- websocket-sharp/HandshakeRequest.cs | 18 +++++++++++++----- websocket-sharp/Net/HttpListenerRequest.cs | 16 ++++++++++++---- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/websocket-sharp/HandshakeRequest.cs b/websocket-sharp/HandshakeRequest.cs index 604ce6f6..bc84e198 100644 --- a/websocket-sharp/HandshakeRequest.cs +++ b/websocket-sharp/HandshakeRequest.cs @@ -39,6 +39,8 @@ namespace WebSocketSharp private string _method; private string _uri; + private bool _websocketRequest; + private bool _websocketRequestWasSet; #endregion @@ -94,11 +96,17 @@ namespace WebSocketSharp public bool IsWebSocketRequest { get { - var headers = Headers; - return _method == "GET" && - ProtocolVersion > HttpVersion.Version10 && - headers.Contains ("Upgrade", "websocket") && - headers.Contains ("Connection", "Upgrade"); + if (!_websocketRequestWasSet) { + var headers = Headers; + _websocketRequest = _method == "GET" && + ProtocolVersion > HttpVersion.Version10 && + headers.Contains ("Upgrade", "websocket") && + headers.Contains ("Connection", "Upgrade"); + + _websocketRequestWasSet = true; + } + + return _websocketRequest; } } diff --git a/websocket-sharp/Net/HttpListenerRequest.cs b/websocket-sharp/Net/HttpListenerRequest.cs index fafa4729..cd08dc61 100644 --- a/websocket-sharp/Net/HttpListenerRequest.cs +++ b/websocket-sharp/Net/HttpListenerRequest.cs @@ -83,6 +83,8 @@ namespace WebSocketSharp.Net private Uri _url; private string [] _userLanguages; private Version _version; + private bool _websocketRequest; + private bool _websocketRequestWasSet; #endregion @@ -273,10 +275,16 @@ namespace WebSocketSharp.Net /// public bool IsWebSocketRequest { get { - return _method == "GET" && - _version > HttpVersion.Version10 && - _headers.Contains ("Upgrade", "websocket") && - _headers.Contains ("Connection", "Upgrade"); + if (!_websocketRequestWasSet) { + _websocketRequest = _method == "GET" && + _version > HttpVersion.Version10 && + _headers.Contains ("Upgrade", "websocket") && + _headers.Contains ("Connection", "Upgrade"); + + _websocketRequestWasSet = true; + } + + return _websocketRequest; } }