From fa1538250cda016157b4a454183e0ac3b29f7a43 Mon Sep 17 00:00:00 2001 From: sta Date: Mon, 19 Oct 2020 20:17:49 +0900 Subject: [PATCH] [Modify] Use List --- websocket-sharp/Net/EndPointListener.cs | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/websocket-sharp/Net/EndPointListener.cs b/websocket-sharp/Net/EndPointListener.cs index 9ac8370f..ae525f71 100644 --- a/websocket-sharp/Net/EndPointListener.cs +++ b/websocket-sharp/Net/EndPointListener.cs @@ -64,7 +64,7 @@ namespace WebSocketSharp.Net private List _all; // host == '+' private static readonly string _defaultCertFolderPath; private IPEndPoint _endpoint; - private Dictionary _prefixes; + private List _prefixes; private bool _secure; private Socket _socket; private ServerSslConfiguration _sslConfig; @@ -114,7 +114,7 @@ namespace WebSocketSharp.Net _sslConfig.ServerCertificate = cert; } - _prefixes = new Dictionary (); + _prefixes = new List (); _unregistered = new Dictionary (); _unregisteredSync = ((ICollection) _unregistered).SyncRoot; @@ -377,9 +377,10 @@ namespace WebSocketSharp.Net path += "/"; if (host != null && host.Length > 0) { + var prefs = _prefixes; var bestLen = -1; - foreach (var pref in _prefixes.Keys) { + foreach (var pref in prefs) { if (dns) { var prefHost = pref.Host; var prefDns = Uri.CheckHostName (prefHost) == UriHostNameType.Dns; @@ -459,13 +460,14 @@ namespace WebSocketSharp.Net return; } - Dictionary prefs, prefs2; + List prefs, prefs2; do { prefs = _prefixes; + var idx = prefs.IndexOf (prefix); - if (prefs.ContainsKey (prefix)) { - if (prefs[prefix] != prefix.Listener) { + if (idx > -1) { + if (prefs[idx].Listener != prefix.Listener) { var msg = String.Format ( "There is another listener for {0}.", prefix ); @@ -476,8 +478,8 @@ namespace WebSocketSharp.Net return; } - prefs2 = new Dictionary (prefs); - prefs2[prefix] = prefix.Listener; + prefs2 = new List (prefs); + prefs2.Add (prefix); } while ( Interlocked.CompareExchange (ref _prefixes, prefs2, prefs) != prefs @@ -553,15 +555,15 @@ namespace WebSocketSharp.Net return; } - Dictionary prefs, prefs2; + List prefs, prefs2; do { prefs = _prefixes; - if (!prefs.ContainsKey (prefix)) + if (!prefs.Contains (prefix)) break; - prefs2 = new Dictionary (prefs); + prefs2 = new List (prefs); prefs2.Remove (prefix); } while (