diff --git a/websocket-sharp/Ext.cs b/websocket-sharp/Ext.cs index 100c08e3..270a2a84 100644 --- a/websocket-sharp/Ext.cs +++ b/websocket-sharp/Ext.cs @@ -516,19 +516,28 @@ namespace WebSocketSharp internal static bool IsText (this string value) { var len = value.Length; + for (var i = 0; i < len; i++) { var c = value[i]; - if (c < 0x20 && !"\r\n\t".Contains (c)) - return false; + if (c < 0x20) { + if (!"\r\n\t".Contains (c)) + return false; - if (c == 0x7f) - return false; + if (c == '\n') { + i++; + if (i == len) + break; - if (c == '\n' && ++i < len) { - c = value[i]; - if (!" \t".Contains (c)) - return false; + c = value[i]; + if (!" \t".Contains (c)) + return false; + } + + continue; } + + if (c == 0x7f) + return false; } return true;