diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-05-11 22:40:26 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-05-11 22:40:26 -0400 |
| commit | fc7ed4d3fba0f3aff90c7cd5fd6f5eba5651f75c (patch) | |
| tree | f18cb23b3dc29b8b9109e91ee8a8a61d0737c2b1 | |
| parent | aae30eda52352a1f6288eaa7e4b34c2fe92d188a (diff) | |
add local endpoint
| -rw-r--r-- | MediaBrowser.Dlna/Ssdp/Datagram.cs | 11 | ||||
| -rw-r--r-- | MediaBrowser.Dlna/Ssdp/DeviceDiscovery.cs | 11 |
2 files changed, 16 insertions, 6 deletions
diff --git a/MediaBrowser.Dlna/Ssdp/Datagram.cs b/MediaBrowser.Dlna/Ssdp/Datagram.cs index cca59720f..0a6d27303 100644 --- a/MediaBrowser.Dlna/Ssdp/Datagram.cs +++ b/MediaBrowser.Dlna/Ssdp/Datagram.cs @@ -30,7 +30,7 @@ namespace MediaBrowser.Dlna.Ssdp { var msg = Encoding.ASCII.GetBytes(Message); - var socket = CreateSocket(); + var socket = CreateSocket(!IgnoreBindFailure); if (socket == null) { @@ -102,13 +102,20 @@ namespace MediaBrowser.Dlna.Ssdp } } - private Socket CreateSocket() + private Socket CreateSocket(bool isBroadcast) { try { var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); + + if (isBroadcast) + { + socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true); + socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 4); + } + return socket; } catch (Exception ex) diff --git a/MediaBrowser.Dlna/Ssdp/DeviceDiscovery.cs b/MediaBrowser.Dlna/Ssdp/DeviceDiscovery.cs index 94342bf31..3befa221b 100644 --- a/MediaBrowser.Dlna/Ssdp/DeviceDiscovery.cs +++ b/MediaBrowser.Dlna/Ssdp/DeviceDiscovery.cs @@ -87,11 +87,14 @@ namespace MediaBrowser.Dlna.Ssdp try { - var ip = _appHost.LocalIpAddress; + if (e.LocalEndPoint == null) + { + var ip = _appHost.LocalIpAddress; + e.LocalEndPoint = new IPEndPoint(IPAddress.Parse(ip), 0); + } - if (!string.IsNullOrWhiteSpace(ip)) + if (e.LocalEndPoint != null) { - e.LocalIp = IPAddress.Parse(ip); TryCreateDevice(e); } } @@ -140,7 +143,7 @@ namespace MediaBrowser.Dlna.Ssdp { var args = SsdpHelper.ParseSsdpResponse(receiveBuffer); args.EndPoint = endPoint; - args.LocalIp = localIp; + args.LocalEndPoint = new IPEndPoint(localIp, 0); if (!_ssdpHandler.IsSelfNotification(args)) { |
