Merge pull request #1811 from joshuaboniface/fix-listen

Configure Kestrel listener to use configured IPs
This commit is contained in:
Joshua M. Boniface 2019-09-29 17:22:40 -04:00 committed by GitHub
commit 749023bf02
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -615,12 +615,35 @@ namespace Emby.Server.Implementations
var host = new WebHostBuilder() var host = new WebHostBuilder()
.UseKestrel(options => .UseKestrel(options =>
{ {
var addresses = ServerConfigurationManager
.Configuration
.LocalNetworkAddresses
.Select(NormalizeConfiguredLocalAddress)
.Where(i => i != null)
.ToList();
if (addresses.Any())
{
foreach (var address in addresses)
{
Logger.LogInformation("Kestrel listening on {ipaddr}", address);
options.Listen(address, HttpPort);
if (EnableHttps && Certificate != null)
{
options.Listen(address, HttpsPort, listenOptions => listenOptions.UseHttps(Certificate));
}
}
}
else
{
Logger.LogInformation("Kestrel listening on all interfaces");
options.ListenAnyIP(HttpPort); options.ListenAnyIP(HttpPort);
if (EnableHttps && Certificate != null) if (EnableHttps && Certificate != null)
{ {
options.ListenAnyIP(HttpsPort, listenOptions => listenOptions.UseHttps(Certificate)); options.ListenAnyIP(HttpsPort, listenOptions => listenOptions.UseHttps(Certificate));
} }
}
}) })
.UseContentRoot(contentRoot) .UseContentRoot(contentRoot)
.ConfigureServices(services => .ConfigureServices(services =>
@ -640,8 +663,16 @@ namespace Emby.Server.Implementations
}) })
.Build(); .Build();
try
{
await host.StartAsync().ConfigureAwait(false); await host.StartAsync().ConfigureAwait(false);
} }
catch (Exception ex)
{
Logger.LogError("Kestrel failed to start! This is most likely due to an invalid address or port bind - correct your bind configuration in system.xml and try again.");
throw;
}
}
private async Task ExecuteWebsocketHandlerAsync(HttpContext context, Func<Task> next) private async Task ExecuteWebsocketHandlerAsync(HttpContext context, Func<Task> next)
{ {