From 0e770128a7ef02dc80ca444eb7f230e69d6b6bd6 Mon Sep 17 00:00:00 2001 From: nSwann09 Date: Tue, 12 Sep 2017 21:53:25 +0100 Subject: [PATCH 1/2] Allowing port 0, returning port number from TcpListner if port is initially set to 0 --- websocket-sharp/Server/WebSocketServer.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/websocket-sharp/Server/WebSocketServer.cs b/websocket-sharp/Server/WebSocketServer.cs index 9657da323..7b3613111 100644 --- a/websocket-sharp/Server/WebSocketServer.cs +++ b/websocket-sharp/Server/WebSocketServer.cs @@ -123,7 +123,7 @@ public WebSocketServer () /// on which to listen. /// /// - /// is less than 1 or greater than 65535. + /// is less than 0 or greater than 65535. /// public WebSocketServer (int port) : this (port, port == 443) @@ -213,12 +213,12 @@ public WebSocketServer (string url) /// secure connections; otherwise, false. /// /// - /// is less than 1 or greater than 65535. + /// is less than 0 or greater than 65535. /// public WebSocketServer (int port, bool secure) { if (!port.IsPortNumber ()) { - var msg = "Less than 1 or greater than 65535."; + var msg = "Less than 0 or greater than 65535."; throw new ArgumentOutOfRangeException ("port", msg); } @@ -965,6 +965,11 @@ private void startReceiving () _receiveThread = new Thread (new ThreadStart (receiveRequest)); _receiveThread.IsBackground = true; _receiveThread.Start (); + + if (_port == 0) + { + _port = ((System.Net.IPEndPoint)_listener.LocalEndpoint).Port; + } } private void stop (ushort code, string reason) From c2c9cafe850b625666924eddfe44b21d185e2cc9 Mon Sep 17 00:00:00 2001 From: nSwann09 Date: Tue, 12 Sep 2017 21:55:34 +0100 Subject: [PATCH 2/2] IsPortNumber returns true for port 0 --- websocket-sharp/Ext.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/websocket-sharp/Ext.cs b/websocket-sharp/Ext.cs index ff85a42cf..9df2373bd 100644 --- a/websocket-sharp/Ext.cs +++ b/websocket-sharp/Ext.cs @@ -506,7 +506,7 @@ internal static bool IsData (this Opcode opcode) internal static bool IsPortNumber (this int value) { - return value > 0 && value < 65536; + return value > -1 && value < 65536; } internal static bool IsReserved (this ushort code)