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) 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)