From 9fa2b58990823ad7272c9fd912224d2523d45f93 Mon Sep 17 00:00:00 2001 From: sta Date: Wed, 2 Aug 2017 17:20:06 +0900 Subject: [PATCH] [Modify] Throw exceptions --- .../Server/WebSocketSessionManager.cs | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/websocket-sharp/Server/WebSocketSessionManager.cs b/websocket-sharp/Server/WebSocketSessionManager.cs index 1d2dc604..f27a5534 100644 --- a/websocket-sharp/Server/WebSocketSessionManager.cs +++ b/websocket-sharp/Server/WebSocketSessionManager.cs @@ -596,19 +596,27 @@ namespace WebSocketSharp.Server /// public Dictionary Broadping (string message) { - if (message == null || message.Length == 0) - return Broadping (); - - byte[] data = null; - var msg = _state.CheckIfAvailable (false, true, false) ?? - WebSocket.CheckPingParameter (message, out data); - - if (msg != null) { - _logger.Error (msg); - return null; + if (_state != ServerState.Start) { + var msg = "The current state of the manager is not Start."; + throw new InvalidOperationException (msg); } - return Broadping (WebSocketFrame.CreatePingFrame (data, false).ToArray (), _waitTime); + if (message.IsNullOrEmpty ()) + return Broadping (WebSocketFrame.EmptyPingBytes, _waitTime); + + byte[] bytes; + if (!message.TryGetUTF8EncodedBytes (out bytes)) { + var msg = "It could not be UTF-8-encoded."; + throw new ArgumentException (msg, "message"); + } + + if (bytes.Length > 125) { + var msg = "Its size is greater than 125 bytes."; + throw new ArgumentOutOfRangeException ("message", msg); + } + + var frame = WebSocketFrame.CreatePingFrame (bytes, false); + return Broadping (frame.ToArray (), _waitTime); } ///