aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Dlna/Ssdp/Datagram.cs11
-rw-r--r--MediaBrowser.Dlna/Ssdp/DeviceDiscovery.cs11
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))
{