|  | @@ -7,6 +7,7 @@ using System.Linq;
 | 
	
		
			
				|  |  |  using System.Net;
 | 
	
		
			
				|  |  |  using System.Reflection;
 | 
	
		
			
				|  |  |  using System.Runtime.InteropServices;
 | 
	
		
			
				|  |  | +using System.Runtime.Versioning;
 | 
	
		
			
				|  |  |  using System.Text;
 | 
	
		
			
				|  |  |  using System.Threading;
 | 
	
		
			
				|  |  |  using System.Threading.Tasks;
 | 
	
	
		
			
				|  | @@ -201,7 +202,7 @@ namespace Jellyfin.Server
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      await webHost.StartAsync(_tokenSource.Token).ConfigureAwait(false);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                    if (startupConfig.UseUnixSocket() && Environment.OSVersion.Platform == PlatformID.Unix)
 | 
	
		
			
				|  |  | +                    if (!OperatingSystem.IsWindows() && startupConfig.UseUnixSocket())
 | 
	
		
			
				|  |  |                      {
 | 
	
		
			
				|  |  |                          var socketPath = GetUnixSocketPath(startupConfig, appPaths);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -691,27 +692,15 @@ namespace Jellyfin.Server
 | 
	
		
			
				|  |  |              return socketPath;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        [UnsupportedOSPlatform("windows")]
 | 
	
		
			
				|  |  |          private static void SetUnixSocketPermissions(IConfiguration startupConfig, string socketPath)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              var socketPerms = startupConfig.GetUnixSocketPermissions();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if (!string.IsNullOrEmpty(socketPerms))
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  | -                #pragma warning disable SA1300 // Entrypoint is case sensitive.
 | 
	
		
			
				|  |  | -                [DllImport("libc")]
 | 
	
		
			
				|  |  | -                static extern int chmod(string pathname, int mode);
 | 
	
		
			
				|  |  | -                #pragma warning restore SA1300
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                var exitCode = chmod(socketPath, Convert.ToInt32(socketPerms, 8));
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                if (exitCode < 0)
 | 
	
		
			
				|  |  | -                {
 | 
	
		
			
				|  |  | -                    _logger.LogError("Failed to set Kestrel unix socket permissions to {SocketPerms}, return code: {ExitCode}", socketPerms, exitCode);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                else
 | 
	
		
			
				|  |  | -                {
 | 
	
		
			
				|  |  | -                    _logger.LogInformation("Kestrel unix socket permissions set to {SocketPerms}", socketPerms);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | +                File.SetUnixFileMode(socketPath, (UnixFileMode)Convert.ToInt32(socketPerms, 8));
 | 
	
		
			
				|  |  | +                _logger.LogInformation("Kestrel unix socket permissions set to {SocketPerms}", socketPerms);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 |