[Modify] Polish it

This commit is contained in:
sta 2016-02-11 17:25:15 +09:00
parent 7146f6e1da
commit 60eae92f30

View File

@ -1015,6 +1015,9 @@ namespace WebSocketSharp
if (_protocols != null) if (_protocols != null)
_protocol = res.Headers["Sec-WebSocket-Protocol"]; _protocol = res.Headers["Sec-WebSocket-Protocol"];
if (ExtensionsRequested)
processSecWebSocketExtensionsServerHeader (res.Headers["Sec-WebSocket-Extensions"]);
var cookies = res.Cookies; var cookies = res.Cookies;
if (cookies.Count > 0) if (cookies.Count > 0)
_cookies.SetOrRemove (cookies); _cookies.SetOrRemove (cookies);
@ -1689,20 +1692,19 @@ namespace WebSocketSharp
// As client // As client
private bool validateSecWebSocketExtensionsHeader (string value) private bool validateSecWebSocketExtensionsHeader (string value)
{ {
var comp = _compression != CompressionMethod.None; if (value == null)
if (value == null || value.Length == 0) {
if (comp)
_compression = CompressionMethod.None;
return true; return true;
}
if (!comp) if (value.Length == 0)
return false; return false;
if (!ExtensionsRequested)
return false;
var comp = _compression != CompressionMethod.None;
foreach (var e in value.SplitHeaderValue (',')) { foreach (var e in value.SplitHeaderValue (',')) {
var ext = e.Trim (); var ext = e.Trim ();
if (ext.IsCompressionExtension (_compression)) { if (comp && ext.IsCompressionExtension (_compression)) {
if (!ext.Contains ("server_no_context_takeover")) { if (!ext.Contains ("server_no_context_takeover")) {
_logger.Error ("The server hasn't sent back 'server_no_context_takeover'."); _logger.Error ("The server hasn't sent back 'server_no_context_takeover'.");
return false; return false;
@ -1712,13 +1714,15 @@ namespace WebSocketSharp
_logger.Warn ("The server hasn't sent back 'client_no_context_takeover'."); _logger.Warn ("The server hasn't sent back 'client_no_context_takeover'.");
var method = _compression.ToExtensionString (); var method = _compression.ToExtensionString ();
var invalid = ext.SplitHeaderValue (';').Contains ( var invalid =
ext.SplitHeaderValue (';').Contains (
t => { t => {
t = t.Trim (); t = t.Trim ();
return t != method && return t != method
t != "server_no_context_takeover" && && t != "server_no_context_takeover"
t != "client_no_context_takeover"; && t != "client_no_context_takeover";
}); }
);
if (invalid) if (invalid)
return false; return false;
@ -1728,7 +1732,6 @@ namespace WebSocketSharp
} }
} }
_extensions = value;
return true; return true;
} }