|
@@ -615,11 +615,34 @@ namespace Emby.Server.Implementations
|
|
|
var host = new WebHostBuilder()
|
|
|
.UseKestrel(options =>
|
|
|
{
|
|
|
- options.ListenAnyIP(HttpPort);
|
|
|
+ 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)
|
|
|
+ if (EnableHttps && Certificate != null)
|
|
|
+ {
|
|
|
+ options.Listen(address, HttpsPort, listenOptions => listenOptions.UseHttps(Certificate));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
{
|
|
|
- options.ListenAnyIP(HttpsPort, listenOptions => listenOptions.UseHttps(Certificate));
|
|
|
+ Logger.LogInformation("Kestrel listening on all interfaces");
|
|
|
+ options.ListenAnyIP(HttpPort);
|
|
|
+
|
|
|
+ if (EnableHttps && Certificate != null)
|
|
|
+ {
|
|
|
+ options.ListenAnyIP(HttpsPort, listenOptions => listenOptions.UseHttps(Certificate));
|
|
|
+ }
|
|
|
}
|
|
|
})
|
|
|
.UseContentRoot(contentRoot)
|
|
@@ -640,7 +663,15 @@ namespace Emby.Server.Implementations
|
|
|
})
|
|
|
.Build();
|
|
|
|
|
|
- await host.StartAsync().ConfigureAwait(false);
|
|
|
+ try
|
|
|
+ {
|
|
|
+ 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)
|