Bläddra i källkod

improve socket disposal

Luke Pulverenti 9 år sedan
förälder
incheckning
34b72a98cf
1 ändrade filer med 18 tillägg och 17 borttagningar
  1. 18 17
      MediaBrowser.Dlna/Ssdp/DeviceDiscovery.cs

+ 18 - 17
MediaBrowser.Dlna/Ssdp/DeviceDiscovery.cs

@@ -109,30 +109,31 @@ namespace MediaBrowser.Dlna.Ssdp
 
 					var endPoint = new IPEndPoint(localIp, 1900);
 
-                    var socket = GetMulticastSocket(localIp, endPoint);
-
-                    var receiveBuffer = new byte[64000];
-
-                    CreateNotifier(localIp);
-
-                    while (!_tokenSource.IsCancellationRequested)
+                    using (var socket = GetMulticastSocket(localIp, endPoint))
                     {
-                        var receivedBytes = await socket.ReceiveAsync(receiveBuffer, 0, 64000);
+                        var receiveBuffer = new byte[64000];
+
+                        CreateNotifier(localIp);
 
-                        if (receivedBytes > 0)
+                        while (!_tokenSource.IsCancellationRequested)
                         {
-                            var args = SsdpHelper.ParseSsdpResponse(receiveBuffer);
-                            args.EndPoint = endPoint;
-                            args.LocalEndPoint = new IPEndPoint(localIp, 0);
+                            var receivedBytes = await socket.ReceiveAsync(receiveBuffer, 0, 64000);
 
-                            if (_ssdpHandler.IgnoreMessage(args, true))
+                            if (receivedBytes > 0)
                             {
-                                return;
-                            }
+                                var args = SsdpHelper.ParseSsdpResponse(receiveBuffer);
+                                args.EndPoint = endPoint;
+                                args.LocalEndPoint = new IPEndPoint(localIp, 0);
+
+                                if (_ssdpHandler.IgnoreMessage(args, true))
+                                {
+                                    return;
+                                }
 
-                            _ssdpHandler.LogMessageReceived(args, true);
+                                _ssdpHandler.LogMessageReceived(args, true);
 
-                            TryCreateDevice(args);
+                                TryCreateDevice(args);
+                            }
                         }
                     }