diff --git a/websocket-sharp/Net/WebHeaderCollection.cs b/websocket-sharp/Net/WebHeaderCollection.cs index 67121258..67f98493 100644 --- a/websocket-sharp/Net/WebHeaderCollection.cs +++ b/websocket-sharp/Net/WebHeaderCollection.cs @@ -888,12 +888,22 @@ namespace WebSocketSharp.Net } private void doWithCheckingState ( - Action action, string name, string value, bool response, bool setState) + Action action, + string name, + string value, + bool response, + bool setState + ) { checkState (response); action (name, value); - if (setState && _state == HttpHeaderType.Unspecified) - _state = response ? HttpHeaderType.Response : HttpHeaderType.Request; + + setState = setState && _state == HttpHeaderType.Unspecified; + + if (!setState) + return; + + _state = response ? HttpHeaderType.Response : HttpHeaderType.Request; } private void doWithoutCheckingName (Action action, string name, string value)