Move ReuseAddress to server options.

This commit is contained in:
Christian Kratky
2019-06-27 15:20:27 +02:00
parent 979df5f17e
commit 8916df8d7b
3 changed files with 17 additions and 4 deletions
@@ -60,8 +60,17 @@ namespace MQTTnet.Implementations
_logger.Info($"Starting TCP listener for {_localEndPoint} TLS={_tlsCertificate != null}.");
_socket = new Socket(_addressFamily, SocketType.Stream, ProtocolType.Tcp);
_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.NoDelay, true);
if (_options.ReuseAddress)
{
_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
}
if (_options.NoDelay)
{
_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.NoDelay, true);
}
_socket.Bind(_localEndPoint);
_socket.Listen(_options.ConnectionBacklog);
@@ -19,5 +19,10 @@ namespace MQTTnet.Server
public IPAddress BoundInterNetworkAddress { get; set; } = IPAddress.Any;
public IPAddress BoundInterNetworkV6Address { get; set; } = IPAddress.IPv6Any;
/// <summary>
/// This requires admin permissions on Linux.
/// </summary>
public bool ReuseAddress { get; set; }
}
}