aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Emby.Common.Implementations/BaseApplicationHost.cs50
-rw-r--r--Emby.Common.Implementations/Diagnostics/CommonProcess.cs2
-rw-r--r--Emby.Common.Implementations/Emby.Common.Implementations.csproj381
-rw-r--r--Emby.Common.Implementations/Emby.Common.Implementations.xproj23
-rw-r--r--Emby.Common.Implementations/EnvironmentInfo/EnvironmentInfo.cs46
-rw-r--r--Emby.Common.Implementations/HttpClientManager/HttpClientManager.cs36
-rw-r--r--Emby.Common.Implementations/Net/SocketFactory.cs11
-rw-r--r--Emby.Common.Implementations/Net/UdpSocket.cs169
-rw-r--r--Emby.Common.Implementations/Properties/AssemblyInfo.cs23
-rw-r--r--Emby.Common.Implementations/Reflection/AssemblyInfo.cs6
-rw-r--r--Emby.Common.Implementations/Serialization/XmlSerializer.cs9
-rw-r--r--Emby.Common.Implementations/Xml/XmlReaderSettingsFactory.cs2
-rw-r--r--Emby.Common.Implementations/packages.config7
-rw-r--r--Emby.Common.Implementations/project.json71
-rw-r--r--Emby.Server.Core/ApplicationPathHelper.cs (renamed from MediaBrowser.Server.Startup.Common/ApplicationPathHelper.cs)2
-rw-r--r--Emby.Server.Core/Cryptography/ASN1.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/ASN1.cs)3
-rw-r--r--Emby.Server.Core/Cryptography/ASN1Convert.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/ASN1Convert.cs)2
-rw-r--r--Emby.Server.Core/Cryptography/BitConverterLE.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/BitConverterLE.cs)2
-rw-r--r--Emby.Server.Core/Cryptography/CertificateGenerator.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/CertificateGenerator.cs)2
-rw-r--r--Emby.Server.Core/Cryptography/CryptoConvert.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/CryptoConvert.cs)2
-rw-r--r--Emby.Server.Core/Cryptography/PKCS1.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/PKCS1.cs)2
-rw-r--r--Emby.Server.Core/Cryptography/PKCS12.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/PKCS12.cs)2
-rw-r--r--Emby.Server.Core/Cryptography/PKCS7.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/PKCS7.cs)2
-rw-r--r--Emby.Server.Core/Cryptography/PKCS8.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/PKCS8.cs)2
-rw-r--r--Emby.Server.Core/Cryptography/PfxGenerator.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/PfxGenerator.cs)2
-rw-r--r--Emby.Server.Core/Cryptography/X501Name.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/X501Name.cs)2
-rw-r--r--Emby.Server.Core/Cryptography/X509Builder.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/X509Builder.cs)2
-rw-r--r--Emby.Server.Core/Cryptography/X509Certificate.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/X509Certificate.cs)2
-rw-r--r--Emby.Server.Core/Cryptography/X509CertificateBuilder.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/X509CertificateBuilder.cs)2
-rw-r--r--Emby.Server.Core/Cryptography/X509CertificateCollection.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/X509CertificateCollection.cs)2
-rw-r--r--Emby.Server.Core/Cryptography/X509Extension.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/X509Extension.cs)2
-rw-r--r--Emby.Server.Core/Cryptography/X509Extensions.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/X509Extensions.cs)2
-rw-r--r--Emby.Server.Core/Cryptography/X520Attributes.cs (renamed from MediaBrowser.Server.Startup.Common/Cryptography/X520Attributes.cs)2
-rw-r--r--Emby.Server.Core/Emby.Server.Core.csproj (renamed from MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj)88
-rw-r--r--Emby.Server.Core/Emby.Server.Core.xproj33
-rw-r--r--Emby.Server.Core/HttpServerFactory.cs103
-rw-r--r--Emby.Server.Core/IO/MemoryStreamProvider.cs (renamed from MediaBrowser.Server.Startup.Common/IO/MemoryStreamProvider.cs)2
-rw-r--r--Emby.Server.Core/Properties/AssemblyInfo.cs23
-rw-r--r--Emby.Server.Core/SystemEvents.cs (renamed from MediaBrowser.Server.Startup.Common/SystemEvents.cs)0
-rw-r--r--Emby.Server.Core/UpdateLevelHelper.cs (renamed from MediaBrowser.Server.Startup.Common/UpdateLevelHelper.cs)6
-rw-r--r--Emby.Server.Core/app.config (renamed from MediaBrowser.Server.Startup.Common/app.config)4
-rw-r--r--Emby.Server.Core/packages.config6
-rw-r--r--Emby.Server.Core/project.json125
-rw-r--r--Emby.Server.Implementations/Data/SqliteItemRepository.cs9
-rw-r--r--Emby.Server.Implementations/Emby.Server.Implementations.csproj24
-rw-r--r--Emby.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpRequest.cs5
-rw-r--r--Emby.Server.Implementations/IO/FileRefresher.cs2
-rw-r--r--Emby.Server.Implementations/Library/LibraryManager.cs6
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs10
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs33
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs130
-rw-r--r--Emby.Server.Implementations/Session/SessionManager.cs13
-rw-r--r--Emby.Server.Implementations/TV/TVSeriesManager.cs16
-rw-r--r--Emby.Server.Implementations/Udp/UdpServer.cs64
-rw-r--r--MediaBrowser.Api/Reports/ReportsService.cs1
-rw-r--r--MediaBrowser.Api/StartupWizardService.cs1
-rw-r--r--MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs1
-rw-r--r--MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs3
-rw-r--r--MediaBrowser.Api/UserLibrary/ItemsService.cs1
-rw-r--r--MediaBrowser.Api/UserLibrary/UserLibraryService.cs14
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs42
-rw-r--r--MediaBrowser.Controller/Entities/InternalItemsQuery.cs1
-rw-r--r--MediaBrowser.Controller/Entities/TV/Series.cs31
-rw-r--r--MediaBrowser.Controller/Entities/UserViewBuilder.cs11
-rw-r--r--MediaBrowser.Controller/Entities/Video.cs37
-rw-r--r--MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs4
-rw-r--r--MediaBrowser.Model/Configuration/ServerConfiguration.cs1
-rw-r--r--MediaBrowser.Model/Net/ISocket.cs10
-rw-r--r--MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj36
-rw-r--r--MediaBrowser.Server.Mono/Program.cs4
-rw-r--r--MediaBrowser.Server.Mono/app.config24
-rw-r--r--MediaBrowser.Server.Mono/packages.config4
-rw-r--r--MediaBrowser.Server.Startup.Common/packages.config4
-rw-r--r--MediaBrowser.ServerApplication/App.config2
-rw-r--r--MediaBrowser.ServerApplication/MainStartup.cs4
-rw-r--r--MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj34
-rw-r--r--MediaBrowser.ServerApplication/packages.config4
-rw-r--r--MediaBrowser.Tests/MediaBrowser.Tests.csproj2
-rw-r--r--MediaBrowser.Tests/app.config2
-rw-r--r--MediaBrowser.sln366
-rw-r--r--Mono.Nat/Mono.Nat.csproj98
-rw-r--r--Mono.Nat/Mono.Nat.xproj23
-rw-r--r--Mono.Nat/Properties/AssemblyInfo.cs24
-rw-r--r--Mono.Nat/project.json41
-rw-r--r--RSSDP/SsdpCommunicationsServer.cs6
-rw-r--r--SocketHttpListener.Portable/Net/ChunkedInputStream.cs160
-rw-r--r--SocketHttpListener.Portable/Net/HttpStreamAsyncResult.cs77
-rw-r--r--SocketHttpListener.Portable/Net/RequestStream.cs231
-rw-r--r--SocketHttpListener.Portable/Primitives/HttpListenerException.cs17
-rw-r--r--SocketHttpListener.Portable/Properties/AssemblyInfo.cs30
-rw-r--r--SocketHttpListener.Portable/SocketHttpListener.Portable.nuget.targets6
-rw-r--r--SocketHttpListener.Portable/packages.config5
-rw-r--r--SocketHttpListener.Portable/project.json17
-rw-r--r--SocketHttpListener/ByteOrder.cs (renamed from SocketHttpListener.Portable/ByteOrder.cs)0
-rw-r--r--SocketHttpListener/CloseEventArgs.cs (renamed from SocketHttpListener.Portable/CloseEventArgs.cs)0
-rw-r--r--SocketHttpListener/CloseStatusCode.cs (renamed from SocketHttpListener.Portable/CloseStatusCode.cs)0
-rw-r--r--SocketHttpListener/CompressionMethod.cs (renamed from SocketHttpListener.Portable/CompressionMethod.cs)0
-rw-r--r--SocketHttpListener/ErrorEventArgs.cs (renamed from SocketHttpListener.Portable/ErrorEventArgs.cs)0
-rw-r--r--SocketHttpListener/Ext.cs (renamed from SocketHttpListener.Portable/Ext.cs)0
-rw-r--r--SocketHttpListener/Fin.cs (renamed from SocketHttpListener.Portable/Fin.cs)0
-rw-r--r--SocketHttpListener/HttpBase.cs (renamed from SocketHttpListener.Portable/HttpBase.cs)0
-rw-r--r--SocketHttpListener/HttpResponse.cs (renamed from SocketHttpListener.Portable/HttpResponse.cs)0
-rw-r--r--SocketHttpListener/Mask.cs (renamed from SocketHttpListener.Portable/Mask.cs)0
-rw-r--r--SocketHttpListener/MessageEventArgs.cs (renamed from SocketHttpListener.Portable/MessageEventArgs.cs)0
-rw-r--r--SocketHttpListener/Net/AuthenticationSchemeSelector.cs (renamed from SocketHttpListener.Portable/Net/AuthenticationSchemeSelector.cs)0
-rw-r--r--SocketHttpListener/Net/ChunkStream.cs (renamed from SocketHttpListener.Portable/Net/ChunkStream.cs)224
-rw-r--r--SocketHttpListener/Net/ChunkedInputStream.cs172
-rw-r--r--SocketHttpListener/Net/CookieHelper.cs (renamed from SocketHttpListener.Portable/Net/CookieHelper.cs)0
-rw-r--r--SocketHttpListener/Net/EndPointListener.cs (renamed from SocketHttpListener.Portable/Net/EndPointListener.cs)0
-rw-r--r--SocketHttpListener/Net/EndPointManager.cs (renamed from SocketHttpListener.Portable/Net/EndPointManager.cs)0
-rw-r--r--SocketHttpListener/Net/HttpConnection.cs (renamed from SocketHttpListener.Portable/Net/HttpConnection.cs)21
-rw-r--r--SocketHttpListener/Net/HttpListener.cs (renamed from SocketHttpListener.Portable/Net/HttpListener.cs)0
-rw-r--r--SocketHttpListener/Net/HttpListenerBasicIdentity.cs (renamed from SocketHttpListener.Portable/Net/HttpListenerBasicIdentity.cs)0
-rw-r--r--SocketHttpListener/Net/HttpListenerContext.cs (renamed from SocketHttpListener.Portable/Net/HttpListenerContext.cs)0
-rw-r--r--SocketHttpListener/Net/HttpListenerPrefixCollection.cs (renamed from SocketHttpListener.Portable/Net/HttpListenerPrefixCollection.cs)0
-rw-r--r--SocketHttpListener/Net/HttpListenerRequest.cs (renamed from SocketHttpListener.Portable/Net/HttpListenerRequest.cs)0
-rw-r--r--SocketHttpListener/Net/HttpListenerResponse.cs (renamed from SocketHttpListener.Portable/Net/HttpListenerResponse.cs)0
-rw-r--r--SocketHttpListener/Net/HttpRequestStream.Managed.cs196
-rw-r--r--SocketHttpListener/Net/HttpRequestStream.cs144
-rw-r--r--SocketHttpListener/Net/HttpStatusCode.cs (renamed from SocketHttpListener.Portable/Net/HttpStatusCode.cs)0
-rw-r--r--SocketHttpListener/Net/HttpStreamAsyncResult.cs85
-rw-r--r--SocketHttpListener/Net/HttpVersion.cs (renamed from SocketHttpListener.Portable/Net/HttpVersion.cs)0
-rw-r--r--SocketHttpListener/Net/ListenerPrefix.cs (renamed from SocketHttpListener.Portable/Net/ListenerPrefix.cs)0
-rw-r--r--SocketHttpListener/Net/ResponseStream.cs (renamed from SocketHttpListener.Portable/Net/ResponseStream.cs)2
-rw-r--r--SocketHttpListener/Net/WebHeaderCollection.cs (renamed from SocketHttpListener.Portable/Net/WebHeaderCollection.cs)0
-rw-r--r--SocketHttpListener/Net/WebSockets/HttpListenerWebSocketContext.cs (renamed from SocketHttpListener.Portable/Net/WebSockets/HttpListenerWebSocketContext.cs)0
-rw-r--r--SocketHttpListener/Net/WebSockets/WebSocketContext.cs (renamed from SocketHttpListener.Portable/Net/WebSockets/WebSocketContext.cs)0
-rw-r--r--SocketHttpListener/Opcode.cs (renamed from SocketHttpListener.Portable/Opcode.cs)0
-rw-r--r--SocketHttpListener/PayloadData.cs (renamed from SocketHttpListener.Portable/PayloadData.cs)0
-rw-r--r--SocketHttpListener/Primitives/ICertificate.cs (renamed from SocketHttpListener.Portable/Primitives/ICertificate.cs)0
-rw-r--r--SocketHttpListener/Primitives/IStreamFactory.cs (renamed from SocketHttpListener.Portable/Primitives/IStreamFactory.cs)0
-rw-r--r--SocketHttpListener/Primitives/ITextEncoding.cs (renamed from SocketHttpListener.Portable/Primitives/ITextEncoding.cs)0
-rw-r--r--SocketHttpListener/Properties/AssemblyInfo.cs (renamed from MediaBrowser.Server.Startup.Common/Properties/AssemblyInfo.cs)14
-rw-r--r--SocketHttpListener/Rsv.cs (renamed from SocketHttpListener.Portable/Rsv.cs)0
-rw-r--r--SocketHttpListener/SocketHttpListener.csproj (renamed from SocketHttpListener.Portable/SocketHttpListener.Portable.csproj)39
-rw-r--r--SocketHttpListener/WebSocket.cs (renamed from SocketHttpListener.Portable/WebSocket.cs)0
-rw-r--r--SocketHttpListener/WebSocketException.cs (renamed from SocketHttpListener.Portable/WebSocketException.cs)0
-rw-r--r--SocketHttpListener/WebSocketFrame.cs (renamed from SocketHttpListener.Portable/WebSocketFrame.cs)0
-rw-r--r--SocketHttpListener/WebSocketState.cs (renamed from SocketHttpListener.Portable/WebSocketState.cs)0
139 files changed, 1939 insertions, 1914 deletions
diff --git a/Emby.Common.Implementations/BaseApplicationHost.cs b/Emby.Common.Implementations/BaseApplicationHost.cs
index d3d8672be..dd4be9aae 100644
--- a/Emby.Common.Implementations/BaseApplicationHost.cs
+++ b/Emby.Common.Implementations/BaseApplicationHost.cs
@@ -39,10 +39,6 @@ using MediaBrowser.Model.System;
using MediaBrowser.Model.Tasks;
using MediaBrowser.Model.Threading;
-#if NETSTANDARD1_6
-using System.Runtime.Loader;
-#endif
-
namespace Emby.Common.Implementations
{
/// <summary>
@@ -306,7 +302,6 @@ namespace Emby.Common.Implementations
builder.AppendLine(string.Format("Command line: {0}", string.Join(" ", Environment.GetCommandLineArgs())));
-#if NET46
builder.AppendLine(string.Format("Operating system: {0}", Environment.OSVersion));
builder.AppendLine(string.Format("64-Bit OS: {0}", Environment.Is64BitOperatingSystem));
builder.AppendLine(string.Format("64-Bit Process: {0}", Environment.Is64BitProcess));
@@ -320,7 +315,6 @@ namespace Emby.Common.Implementations
builder.AppendLine("Mono: " + displayName.Invoke(null, null));
}
}
-#endif
builder.AppendLine(string.Format("Processor count: {0}", Environment.ProcessorCount));
builder.AppendLine(string.Format("Program data path: {0}", appPaths.ProgramDataPath));
@@ -336,9 +330,7 @@ namespace Emby.Common.Implementations
try
{
// Increase the max http request limit
-#if NET46
ServicePointManager.DefaultConnectionLimit = Math.Max(96, ServicePointManager.DefaultConnectionLimit);
-#endif
}
catch (Exception ex)
{
@@ -436,7 +428,6 @@ namespace Emby.Common.Implementations
if (assemblyPlugin != null)
{
-#if NET46
var assembly = plugin.GetType().Assembly;
var assemblyName = assembly.GetName();
@@ -447,21 +438,7 @@ namespace Emby.Common.Implementations
var assemblyFilePath = Path.Combine(ApplicationPaths.PluginsPath, assemblyFileName);
assemblyPlugin.SetAttributes(assemblyFilePath, assemblyFileName, assemblyName.Version, assemblyId);
-#elif NETSTANDARD1_6
- var typeInfo = plugin.GetType().GetTypeInfo();
- var assembly = typeInfo.Assembly;
- var assemblyName = assembly.GetName();
-
- var attribute = (GuidAttribute)assembly.GetCustomAttribute(typeof(GuidAttribute));
- var assemblyId = new Guid(attribute.Value);
-
- var assemblyFileName = assemblyName.Name + ".dll";
- var assemblyFilePath = Path.Combine(ApplicationPaths.PluginsPath, assemblyFileName);
-
- assemblyPlugin.SetAttributes(assemblyFilePath, assemblyFileName, assemblyName.Version, assemblyId);
-#else
-return null;
-#endif
+ return null;
}
var isFirstRun = !File.Exists(plugin.ConfigurationFilePath);
@@ -492,17 +469,7 @@ return null;
AllConcreteTypes = assemblies
.SelectMany(GetTypes)
- .Where(t =>
- {
-#if NET46
- return t.IsClass && !t.IsAbstract && !t.IsInterface && !t.IsGenericType;
-#endif
-#if NETSTANDARD1_6
- var typeInfo = t.GetTypeInfo();
- return typeInfo.IsClass && !typeInfo.IsAbstract && !typeInfo.IsInterface && !typeInfo.IsGenericType;
-#endif
- return false;
- })
+ .Where(t => t.IsClass && !t.IsAbstract && !t.IsInterface && !t.IsGenericType)
.ToArray();
}
@@ -717,13 +684,7 @@ return null;
{
try
{
-#if NET46
return Assembly.Load(File.ReadAllBytes(file));
-#elif NETSTANDARD1_6
-
- return AssemblyLoadContext.Default.LoadFromStream(new MemoryStream(File.ReadAllBytes(file)));
-#endif
- return null;
}
catch (Exception ex)
{
@@ -742,14 +703,7 @@ return null;
{
var currentType = typeof(T);
-#if NET46
return AllConcreteTypes.Where(currentType.IsAssignableFrom);
-#elif NETSTANDARD1_6
- var currentTypeInfo = currentType.GetTypeInfo();
-
- return AllConcreteTypes.Where(currentTypeInfo.IsAssignableFrom);
-#endif
- return new List<Type>();
}
/// <summary>
diff --git a/Emby.Common.Implementations/Diagnostics/CommonProcess.cs b/Emby.Common.Implementations/Diagnostics/CommonProcess.cs
index 462345ced..f6ca6cf9c 100644
--- a/Emby.Common.Implementations/Diagnostics/CommonProcess.cs
+++ b/Emby.Common.Implementations/Diagnostics/CommonProcess.cs
@@ -31,14 +31,12 @@ namespace Emby.Common.Implementations.Diagnostics
RedirectStandardOutput = options.RedirectStandardOutput
};
-#if NET46
startInfo.ErrorDialog = options.ErrorDialog;
if (options.IsHidden)
{
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
}
-#endif
_process = new Process
{
diff --git a/Emby.Common.Implementations/Emby.Common.Implementations.csproj b/Emby.Common.Implementations/Emby.Common.Implementations.csproj
new file mode 100644
index 000000000..6e818b163
--- /dev/null
+++ b/Emby.Common.Implementations/Emby.Common.Implementations.csproj
@@ -0,0 +1,381 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{1E37A338-9F57-4B70-BD6D-BB9C591E319B}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Emby.Common.Implementations</RootNamespace>
+ <AssemblyName>Emby.Common.Implementations</AssemblyName>
+ <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <TargetFrameworkProfile />
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
+ <HintPath>..\packages\NLog.4.4.3\lib\net45\NLog.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="ServiceStack.Text, Version=4.5.8.0, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\packages\ServiceStack.Text.4.5.8\lib\net45\ServiceStack.Text.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="SharpCompress, Version=0.14.0.0, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\packages\SharpCompress.0.14.0\lib\net45\SharpCompress.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="SimpleInjector, Version=4.0.7.0, Culture=neutral, PublicKeyToken=984cb50dea722e99, processorArchitecture=MSIL">
+ <HintPath>..\packages\SimpleInjector.4.0.7\lib\net45\SimpleInjector.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="..\SharedVersion.cs">
+ <Link>Properties\SharedVersion.cs</Link>
+ </Compile>
+ <Compile Include="Archiving\ZipClient.cs" />
+ <Compile Include="BaseApplicationHost.cs" />
+ <Compile Include="Cryptography\CryptographyProvider.cs" />
+ <Compile Include="Devices\DeviceId.cs" />
+ <Compile Include="Diagnostics\CommonProcess.cs" />
+ <Compile Include="Diagnostics\ProcessFactory.cs" />
+ <Compile Include="EnvironmentInfo\EnvironmentInfo.cs" />
+ <Compile Include="HttpClientManager\HttpClientInfo.cs" />
+ <Compile Include="HttpClientManager\HttpClientManager.cs" />
+ <Compile Include="IO\IsoManager.cs" />
+ <Compile Include="IO\LnkShortcutHandler.cs" />
+ <Compile Include="IO\ManagedFileSystem.cs" />
+ <Compile Include="IO\SharpCifsFileSystem.cs" />
+ <Compile Include="IO\SharpCifs\Config.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\DcerpcBind.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\DcerpcBinding.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\DcerpcConstants.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\DcerpcError.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\DcerpcException.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\DcerpcHandle.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\DcerpcMessage.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\DcerpcPipeHandle.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\DcerpcSecurityProvider.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\LsaPolicyHandle.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\Lsarpc.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\LsarSidArrayX.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcDfsRootEnum.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcEnumerateAliasesInDomain.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcGetMembersInAlias.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcLookupSids.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcLsarOpenPolicy2.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcQueryInformationPolicy.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcSamrConnect2.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcSamrConnect4.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcSamrOpenAlias.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcSamrOpenDomain.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcShareEnum.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\MsrpcShareGetInfo.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\Netdfs.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\Samr.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\SamrAliasHandle.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\SamrDomainHandle.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\SamrPolicyHandle.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Msrpc\Srvsvc.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Ndr\NdrBuffer.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Ndr\NdrException.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Ndr\NdrHyper.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Ndr\NdrLong.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Ndr\NdrObject.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Ndr\NdrShort.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Ndr\NdrSmall.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\Rpc.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\UnicodeString.cs" />
+ <Compile Include="IO\SharpCifs\Dcerpc\UUID.cs" />
+ <Compile Include="IO\SharpCifs\Netbios\Lmhosts.cs" />
+ <Compile Include="IO\SharpCifs\Netbios\Name.cs" />
+ <Compile Include="IO\SharpCifs\Netbios\NameQueryRequest.cs" />
+ <Compile Include="IO\SharpCifs\Netbios\NameQueryResponse.cs" />
+ <Compile Include="IO\SharpCifs\Netbios\NameServiceClient.cs" />
+ <Compile Include="IO\SharpCifs\Netbios\NameServicePacket.cs" />
+ <Compile Include="IO\SharpCifs\Netbios\NbtAddress.cs" />
+ <Compile Include="IO\SharpCifs\Netbios\NbtException.cs" />
+ <Compile Include="IO\SharpCifs\Netbios\NodeStatusRequest.cs" />
+ <Compile Include="IO\SharpCifs\Netbios\NodeStatusResponse.cs" />
+ <Compile Include="IO\SharpCifs\Netbios\SessionRequestPacket.cs" />
+ <Compile Include="IO\SharpCifs\Netbios\SessionRetargetResponsePacket.cs" />
+ <Compile Include="IO\SharpCifs\Netbios\SessionServicePacket.cs" />
+ <Compile Include="IO\SharpCifs\Ntlmssp\NtlmFlags.cs" />
+ <Compile Include="IO\SharpCifs\Ntlmssp\NtlmMessage.cs" />
+ <Compile Include="IO\SharpCifs\Ntlmssp\Type1Message.cs" />
+ <Compile Include="IO\SharpCifs\Ntlmssp\Type2Message.cs" />
+ <Compile Include="IO\SharpCifs\Ntlmssp\Type3Message.cs" />
+ <Compile Include="IO\SharpCifs\Smb\ACE.cs" />
+ <Compile Include="IO\SharpCifs\Smb\AllocInfo.cs" />
+ <Compile Include="IO\SharpCifs\Smb\AndXServerMessageBlock.cs" />
+ <Compile Include="IO\SharpCifs\Smb\BufferCache.cs" />
+ <Compile Include="IO\SharpCifs\Smb\Dfs.cs" />
+ <Compile Include="IO\SharpCifs\Smb\DfsReferral.cs" />
+ <Compile Include="IO\SharpCifs\Smb\DosError.cs" />
+ <Compile Include="IO\SharpCifs\Smb\DosFileFilter.cs" />
+ <Compile Include="IO\SharpCifs\Smb\FileEntry.cs" />
+ <Compile Include="IO\SharpCifs\Smb\IInfo.cs" />
+ <Compile Include="IO\SharpCifs\Smb\NetServerEnum2.cs" />
+ <Compile Include="IO\SharpCifs\Smb\NetServerEnum2Response.cs" />
+ <Compile Include="IO\SharpCifs\Smb\NetShareEnum.cs" />
+ <Compile Include="IO\SharpCifs\Smb\NetShareEnumResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\NtlmAuthenticator.cs" />
+ <Compile Include="IO\SharpCifs\Smb\NtlmChallenge.cs" />
+ <Compile Include="IO\SharpCifs\Smb\NtlmContext.cs" />
+ <Compile Include="IO\SharpCifs\Smb\NtlmPasswordAuthentication.cs" />
+ <Compile Include="IO\SharpCifs\Smb\NtStatus.cs" />
+ <Compile Include="IO\SharpCifs\Smb\NtTransQuerySecurityDesc.cs" />
+ <Compile Include="IO\SharpCifs\Smb\NtTransQuerySecurityDescResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\Principal.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SecurityDescriptor.cs" />
+ <Compile Include="IO\SharpCifs\Smb\ServerMessageBlock.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SID.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SigningDigest.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbAuthException.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComBlankResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComClose.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComCreateDirectory.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComDelete.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComDeleteDirectory.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComFindClose2.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComLogoffAndX.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComNegotiate.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComNegotiateResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComNTCreateAndX.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComNTCreateAndXResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComNtTransaction.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComNtTransactionResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComOpenAndX.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComOpenAndXResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComQueryInformation.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComQueryInformationResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComReadAndX.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComReadAndXResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComRename.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComSessionSetupAndX.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComSessionSetupAndXResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComTransaction.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComTransactionResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComTreeConnectAndX.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComTreeConnectAndXResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComTreeDisconnect.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComWrite.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComWriteAndX.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComWriteAndXResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbComWriteResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbConstants.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbException.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbFile.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbFileExtensions.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbFileFilter.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbFileInputStream.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbFilenameFilter.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbFileOutputStream.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbNamedPipe.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbRandomAccessFile.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbSession.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbShareInfo.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbTransport.cs" />
+ <Compile Include="IO\SharpCifs\Smb\SmbTree.cs" />
+ <Compile Include="IO\SharpCifs\Smb\Trans2FindFirst2.cs" />
+ <Compile Include="IO\SharpCifs\Smb\Trans2FindFirst2Response.cs" />
+ <Compile Include="IO\SharpCifs\Smb\Trans2FindNext2.cs" />
+ <Compile Include="IO\SharpCifs\Smb\Trans2GetDfsReferral.cs" />
+ <Compile Include="IO\SharpCifs\Smb\Trans2GetDfsReferralResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\Trans2QueryFSInformation.cs" />
+ <Compile Include="IO\SharpCifs\Smb\Trans2QueryFSInformationResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\Trans2QueryPathInformation.cs" />
+ <Compile Include="IO\SharpCifs\Smb\Trans2QueryPathInformationResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\Trans2SetFileInformation.cs" />
+ <Compile Include="IO\SharpCifs\Smb\Trans2SetFileInformationResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\TransactNamedPipeInputStream.cs" />
+ <Compile Include="IO\SharpCifs\Smb\TransactNamedPipeOutputStream.cs" />
+ <Compile Include="IO\SharpCifs\Smb\TransCallNamedPipe.cs" />
+ <Compile Include="IO\SharpCifs\Smb\TransCallNamedPipeResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\TransPeekNamedPipe.cs" />
+ <Compile Include="IO\SharpCifs\Smb\TransPeekNamedPipeResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\TransTransactNamedPipe.cs" />
+ <Compile Include="IO\SharpCifs\Smb\TransTransactNamedPipeResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\TransWaitNamedPipe.cs" />
+ <Compile Include="IO\SharpCifs\Smb\TransWaitNamedPipeResponse.cs" />
+ <Compile Include="IO\SharpCifs\Smb\WinError.cs" />
+ <Compile Include="IO\SharpCifs\UniAddress.cs" />
+ <Compile Include="IO\SharpCifs\Util\Base64.cs" />
+ <Compile Include="IO\SharpCifs\Util\DES.cs" />
+ <Compile Include="IO\SharpCifs\Util\Encdec.cs" />
+ <Compile Include="IO\SharpCifs\Util\Hexdump.cs" />
+ <Compile Include="IO\SharpCifs\Util\HMACT64.cs" />
+ <Compile Include="IO\SharpCifs\Util\LogStream.cs" />
+ <Compile Include="IO\SharpCifs\Util\MD4.cs" />
+ <Compile Include="IO\SharpCifs\Util\RC4.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\AbstractMap.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\Arrays.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\BufferedReader.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\BufferedWriter.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\CharBuffer.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\CharSequence.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\Collections.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\ConcurrentHashMap.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\DateFormat.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\EnumeratorWrapper.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\Exceptions.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\Extensions.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\FileInputStream.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\FileOutputStream.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\FilePath.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\FileReader.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\FileWriter.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\FilterInputStream.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\FilterOutputStream.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\Hashtable.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\HttpURLConnection.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\ICallable.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\IConcurrentMap.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\IExecutor.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\IFilenameFilter.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\IFuture.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\InputStream.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\InputStreamReader.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\IPrivilegedAction.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\IRunnable.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\Iterator.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\LinkageError.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\Matcher.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\MD5.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\MD5Managed.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\MessageDigest.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\NetworkStream.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\ObjectInputStream.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\ObjectOutputStream.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\OutputStream.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\OutputStreamWriter.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\PipedInputStream.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\PipedOutputStream.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\PrintWriter.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\Properties.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\RandomAccessFile.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\ReentrantLock.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\Reference.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\Runtime.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\SimpleDateFormat.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\SocketEx.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\StringTokenizer.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\SynchronizedList.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\Thread.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\ThreadFactory.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\ThreadPoolExecutor.cs" />
+ <Compile Include="IO\SharpCifs\Util\Sharpen\WrappedSystemStream.cs" />
+ <Compile Include="IO\SharpCifs\Util\Transport\Request.cs" />
+ <Compile Include="IO\SharpCifs\Util\Transport\Response.cs" />
+ <Compile Include="IO\SharpCifs\Util\Transport\Transport.cs" />
+ <Compile Include="IO\SharpCifs\Util\Transport\TransportException.cs" />
+ <Compile Include="Logging\NLogger.cs" />
+ <Compile Include="Logging\NlogManager.cs" />
+ <Compile Include="Networking\NetworkManager.cs" />
+ <Compile Include="Net\DisposableManagedObjectBase.cs" />
+ <Compile Include="Net\NetAcceptSocket.cs" />
+ <Compile Include="Net\SocketAcceptor.cs" />
+ <Compile Include="Net\SocketFactory.cs" />
+ <Compile Include="Net\UdpSocket.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="Reflection\AssemblyInfo.cs" />
+ <Compile Include="ScheduledTasks\DailyTrigger.cs" />
+ <Compile Include="ScheduledTasks\IntervalTrigger.cs" />
+ <Compile Include="ScheduledTasks\ScheduledTaskWorker.cs" />
+ <Compile Include="ScheduledTasks\StartupTrigger.cs" />
+ <Compile Include="ScheduledTasks\SystemEventTrigger.cs" />
+ <Compile Include="ScheduledTasks\TaskManager.cs" />
+ <Compile Include="ScheduledTasks\Tasks\DeleteCacheFileTask.cs" />
+ <Compile Include="ScheduledTasks\Tasks\DeleteLogFileTask.cs" />
+ <Compile Include="ScheduledTasks\Tasks\ReloadLoggerFileTask.cs" />
+ <Compile Include="ScheduledTasks\WeeklyTrigger.cs" />
+ <Compile Include="Serialization\JsonSerializer.cs" />
+ <Compile Include="Serialization\XmlSerializer.cs" />
+ <Compile Include="TextEncoding\TextEncoding.cs" />
+ <Compile Include="TextEncoding\TextEncodingDetect.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\CharsetDetector.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\Big5Prober.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\BitPackage.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\CharDistributionAnalyser.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\CharsetProber.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\Charsets.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\CodingStateMachine.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\EscCharsetProber.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\EscSM.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\EUCJPProber.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\EUCKRProber.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\EUCTWProber.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\GB18030Prober.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\HebrewProber.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\JapaneseContextAnalyser.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\LangBulgarianModel.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\LangCyrillicModel.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\LangGreekModel.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\LangHebrewModel.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\LangHungarianModel.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\LangThaiModel.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\Latin1Prober.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\MBCSGroupProber.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\MBCSSM.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\SBCharsetProber.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\SBCSGroupProber.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\SequenceModel.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\SJISProber.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\SMModel.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\UniversalDetector.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\Core\UTF8Prober.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\DetectionConfidence.cs" />
+ <Compile Include="TextEncoding\UniversalDetector\ICharsetDetector.cs" />
+ <Compile Include="Threading\CommonTimer.cs" />
+ <Compile Include="Threading\TimerFactory.cs" />
+ <Compile Include="Xml\XmlReaderSettingsFactory.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
+ <Project>{9142eefa-7570-41e1-bfcc-468bb571af2f}</Project>
+ <Name>MediaBrowser.Common</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj">
+ <Project>{7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}</Project>
+ <Name>MediaBrowser.Model</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="packages.config" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/Emby.Common.Implementations/Emby.Common.Implementations.xproj b/Emby.Common.Implementations/Emby.Common.Implementations.xproj
deleted file mode 100644
index 5bb6e4e58..000000000
--- a/Emby.Common.Implementations/Emby.Common.Implementations.xproj
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
- <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
- </PropertyGroup>
- <Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.Props" Condition="'$(VSToolsPath)' != ''" />
- <PropertyGroup Label="Globals">
- <ProjectGuid>5a27010a-09c6-4e86-93ea-437484c10917</ProjectGuid>
- <RootNamespace>Emby.Common.Implementations</RootNamespace>
- <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">.\obj</BaseIntermediateOutputPath>
- <OutputPath Condition="'$(OutputPath)'=='' ">.\bin\</OutputPath>
- <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
- </PropertyGroup>
- <PropertyGroup>
- <SchemaVersion>2.0</SchemaVersion>
- </PropertyGroup>
- <ItemGroup>
- <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj" />
- <ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj" />
- </ItemGroup>
- <Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.targets" Condition="'$(VSToolsPath)' != ''" />
-</Project> \ No newline at end of file
diff --git a/Emby.Common.Implementations/EnvironmentInfo/EnvironmentInfo.cs b/Emby.Common.Implementations/EnvironmentInfo/EnvironmentInfo.cs
index 27fc642f1..89aa787b5 100644
--- a/Emby.Common.Implementations/EnvironmentInfo/EnvironmentInfo.cs
+++ b/Emby.Common.Implementations/EnvironmentInfo/EnvironmentInfo.cs
@@ -10,7 +10,7 @@ namespace Emby.Common.Implementations.EnvironmentInfo
{
public class EnvironmentInfo : IEnvironmentInfo
{
- public MediaBrowser.Model.System.Architecture? CustomArchitecture { get; set; }
+ public Architecture? CustomArchitecture { get; set; }
public MediaBrowser.Model.System.OperatingSystem? CustomOperatingSystem { get; set; }
public virtual MediaBrowser.Model.System.OperatingSystem OperatingSystem
@@ -22,7 +22,6 @@ namespace Emby.Common.Implementations.EnvironmentInfo
return CustomOperatingSystem.Value;
}
-#if NET46
switch (Environment.OSVersion.Platform)
{
case PlatformID.MacOSX:
@@ -32,20 +31,7 @@ namespace Emby.Common.Implementations.EnvironmentInfo
case PlatformID.Unix:
return MediaBrowser.Model.System.OperatingSystem.Linux;
}
-#elif NETSTANDARD1_6
- if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
- {
- return OperatingSystem.OSX;
- }
- if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
- {
- return OperatingSystem.Windows;
- }
- if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
- {
- return OperatingSystem.Linux;
- }
-#endif
+
return MediaBrowser.Model.System.OperatingSystem.Windows;
}
}
@@ -54,12 +40,7 @@ namespace Emby.Common.Implementations.EnvironmentInfo
{
get
{
-#if NET46
return Environment.OSVersion.Platform.ToString();
-#elif NETSTANDARD1_6
- return System.Runtime.InteropServices.RuntimeInformation.OSDescription;
-#endif
- return "Operating System";
}
}
@@ -67,12 +48,7 @@ namespace Emby.Common.Implementations.EnvironmentInfo
{
get
{
-#if NET46
return Environment.OSVersion.Version.ToString() + " " + Environment.OSVersion.ServicePack.ToString();
-#elif NETSTANDARD1_6
- return System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription;
-#endif
- return "1.0";
}
}
@@ -84,7 +60,7 @@ namespace Emby.Common.Implementations.EnvironmentInfo
}
}
- public MediaBrowser.Model.System.Architecture SystemArchitecture
+ public Architecture SystemArchitecture
{
get
{
@@ -92,22 +68,8 @@ namespace Emby.Common.Implementations.EnvironmentInfo
{
return CustomArchitecture.Value;
}
-#if NET46
+
return Environment.Is64BitOperatingSystem ? MediaBrowser.Model.System.Architecture.X64 : MediaBrowser.Model.System.Architecture.X86;
-#elif NETSTANDARD1_6
- switch(System.Runtime.InteropServices.RuntimeInformation.OSArchitecture)
- {
- case System.Runtime.InteropServices.Architecture.Arm:
- return MediaBrowser.Model.System.Architecture.Arm;
- case System.Runtime.InteropServices.Architecture.Arm64:
- return MediaBrowser.Model.System.Architecture.Arm64;
- case System.Runtime.InteropServices.Architecture.X64:
- return MediaBrowser.Model.System.Architecture.X64;
- case System.Runtime.InteropServices.Architecture.X86:
- return MediaBrowser.Model.System.Architecture.X86;
- }
-#endif
- return MediaBrowser.Model.System.Architecture.X64;
}
}
diff --git a/Emby.Common.Implementations/HttpClientManager/HttpClientManager.cs b/Emby.Common.Implementations/HttpClientManager/HttpClientManager.cs
index eb9bc1bd0..c2a310c0e 100644
--- a/Emby.Common.Implementations/HttpClientManager/HttpClientManager.cs
+++ b/Emby.Common.Implementations/HttpClientManager/HttpClientManager.cs
@@ -66,13 +66,11 @@ namespace Emby.Common.Implementations.HttpClientManager
_appPaths = appPaths;
_defaultUserAgentFn = defaultUserAgentFn;
-#if NET46
// http://stackoverflow.com/questions/566437/http-post-returns-the-error-417-expectation-failed-c
ServicePointManager.Expect100Continue = false;
// Trakt requests sometimes fail without this
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls;
-#endif
}
/// <summary>
@@ -129,7 +127,6 @@ namespace Emby.Common.Implementations.HttpClientManager
private void AddIpv4Option(HttpWebRequest request, HttpRequestOptions options)
{
-#if NET46
request.ServicePoint.BindIPEndPointDelegate = (servicePount, remoteEndPoint, retryCount) =>
{
if (remoteEndPoint.AddressFamily == AddressFamily.InterNetwork)
@@ -138,7 +135,6 @@ namespace Emby.Common.Implementations.HttpClientManager
}
throw new InvalidOperationException("no IPv4 address");
};
-#endif
}
private WebRequest GetRequest(HttpRequestOptions options, string method)
@@ -165,7 +161,6 @@ namespace Emby.Common.Implementations.HttpClientManager
AddRequestHeaders(httpWebRequest, options);
-#if NET46
if (options.EnableHttpCompression)
{
if (options.DecompressionMethod.HasValue)
@@ -183,48 +178,33 @@ namespace Emby.Common.Implementations.HttpClientManager
{
httpWebRequest.AutomaticDecompression = DecompressionMethods.None;
}
-#endif
}
-#if NET46
request.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.BypassCache);
-#endif
if (httpWebRequest != null)
{
if (options.EnableKeepAlive)
{
-#if NET46
httpWebRequest.KeepAlive = true;
-#endif
}
}
request.Method = method;
-#if NET46
request.Timeout = options.TimeoutMs;
-#endif
if (httpWebRequest != null)
{
if (!string.IsNullOrEmpty(options.Host))
{
-#if NET46
httpWebRequest.Host = options.Host;
-#elif NETSTANDARD1_6
- httpWebRequest.Headers["Host"] = options.Host;
-#endif
}
if (!string.IsNullOrEmpty(options.Referer))
{
-#if NET46
httpWebRequest.Referer = options.Referer;
-#elif NETSTANDARD1_6
- httpWebRequest.Headers["Referer"] = options.Referer;
-#endif
}
}
@@ -235,9 +215,7 @@ namespace Emby.Common.Implementations.HttpClientManager
{
request.Credentials = GetCredential(url, parts[0], parts[1]);
// TODO: .net core ??
-#if NET46
request.PreAuthenticate = true;
-#endif
}
}
@@ -269,11 +247,7 @@ namespace Emby.Common.Implementations.HttpClientManager
}
else
{
-#if NET46
request.Headers.Set(header.Key, header.Value);
-#elif NETSTANDARD1_6
- request.Headers[header.Key] = header.Value;
-#endif
}
}
@@ -285,11 +259,7 @@ namespace Emby.Common.Implementations.HttpClientManager
private void SetUserAgent(HttpWebRequest request, string userAgent)
{
-#if NET46
request.UserAgent = userAgent;
-#elif NETSTANDARD1_6
- request.Headers["User-Agent"] = userAgent;
-#endif
}
/// <summary>
@@ -465,9 +435,7 @@ namespace Emby.Common.Implementations.HttpClientManager
httpWebRequest.ContentType = options.RequestContentType ?? "application/x-www-form-urlencoded";
-#if NET46
httpWebRequest.ContentLength = bytes.Length;
-#endif
(await httpWebRequest.GetRequestStreamAsync().ConfigureAwait(false)).Write(bytes, 0, bytes.Length);
}
catch (Exception ex)
@@ -950,7 +918,6 @@ namespace Emby.Common.Implementations.HttpClientManager
private Task<WebResponse> GetResponseAsync(WebRequest request, TimeSpan timeout)
{
-#if NET46
var taskCompletion = new TaskCompletionSource<WebResponse>();
Task<WebResponse> asyncTask = Task.Factory.FromAsync<WebResponse>(request.BeginGetResponse, request.EndGetResponse, null);
@@ -963,9 +930,6 @@ namespace Emby.Common.Implementations.HttpClientManager
asyncTask.ContinueWith(callback.OnError, TaskContinuationOptions.OnlyOnFaulted);
return taskCompletion.Task;
-#endif
-
- return request.GetResponseAsync();
}
private static void TimeoutCallback(object state, bool timedOut)
diff --git a/Emby.Common.Implementations/Net/SocketFactory.cs b/Emby.Common.Implementations/Net/SocketFactory.cs
index 39f236afa..3562a8644 100644
--- a/Emby.Common.Implementations/Net/SocketFactory.cs
+++ b/Emby.Common.Implementations/Net/SocketFactory.cs
@@ -188,16 +188,7 @@ namespace Emby.Common.Implementations.Net
try
{
-#if NET46
- retVal.ExclusiveAddressUse = false;
-#else
- // The ExclusiveAddressUse acceptSocket option is a Windows-specific option that, when set to "true," tells Windows not to allow another acceptSocket to use the same local address as this acceptSocket
- // See https://github.com/dotnet/corefx/pull/11509 for more details
- if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(System.Runtime.InteropServices.OSPlatform.Windows))
- {
- retVal.ExclusiveAddressUse = false;
- }
-#endif
+ retVal.ExclusiveAddressUse = false;
//retVal.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
retVal.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
retVal.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, multicastTimeToLive);
diff --git a/Emby.Common.Implementations/Net/UdpSocket.cs b/Emby.Common.Implementations/Net/UdpSocket.cs
index f9181eb6a..678cf6f03 100644
--- a/Emby.Common.Implementations/Net/UdpSocket.cs
+++ b/Emby.Common.Implementations/Net/UdpSocket.cs
@@ -116,129 +116,64 @@ namespace Emby.Common.Implementations.Net
private set;
}
- public Task<SocketReceiveResult> ReceiveAsync(CancellationToken cancellationToken)
+ private readonly AsyncCallback _defaultAsyncCallback = (i) => { };
+
+ public IAsyncResult BeginReceive(byte[] buffer, int offset, int count, AsyncCallback callback)
{
- ThrowIfDisposed();
- var tcs = new TaskCompletionSource<SocketReceiveResult>();
EndPoint receivedFromEndPoint = new IPEndPoint(IPAddress.Any, 0);
- var state = new AsyncReceiveState(_Socket, receivedFromEndPoint);
- state.TaskCompletionSource = tcs;
-
- cancellationToken.Register(() => tcs.TrySetCanceled());
-
- _receiveSocketAsyncEventArgs.RemoteEndPoint = receivedFromEndPoint;
- _currentReceiveTaskCompletionSource = tcs;
-
- try
- {
- var willRaiseEvent = _Socket.ReceiveFromAsync(_receiveSocketAsyncEventArgs);
-
- if (!willRaiseEvent)
- {
- _receiveSocketAsyncEventArgs_Completed(this, _receiveSocketAsyncEventArgs);
- }
- }
- catch (Exception ex)
- {
- tcs.TrySetException(ex);
- }
-
- return tcs.Task;
+ return _Socket.BeginReceiveFrom(buffer, offset, count, SocketFlags.None, ref receivedFromEndPoint, callback, buffer);
}
- public Task SendAsync(byte[] buffer, int size, IpEndPointInfo endPoint, CancellationToken cancellationToken)
+ public SocketReceiveResult EndReceive(IAsyncResult result)
{
- ThrowIfDisposed();
-
- if (buffer == null) throw new ArgumentNullException("messageData");
- if (endPoint == null) throw new ArgumentNullException("endPoint");
+ IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
+ EndPoint remoteEndPoint = (EndPoint)sender;
- var ipEndPoint = NetworkManager.ToIPEndPoint(endPoint);
+ var receivedBytes = _Socket.EndReceiveFrom(result, ref remoteEndPoint);
-#if NETSTANDARD1_6
+ var buffer = (byte[]) result.AsyncState;
- if (size != buffer.Length)
+ return new SocketReceiveResult
{
- byte[] copy = new byte[size];
- Buffer.BlockCopy(buffer, 0, copy, 0, size);
- buffer = copy;
- }
-
- cancellationToken.ThrowIfCancellationRequested();
-
- _Socket.SendTo(buffer, ipEndPoint);
- return Task.FromResult(true);
-#else
- var taskSource = new TaskCompletionSource<bool>();
-
- try
- {
- _Socket.BeginSendTo(buffer, 0, size, SocketFlags.None, ipEndPoint, result =>
- {
- if (cancellationToken.IsCancellationRequested)
- {
- taskSource.TrySetCanceled();
- return;
- }
- try
- {
- _Socket.EndSend(result);
- taskSource.TrySetResult(true);
- }
- catch (Exception ex)
- {
- taskSource.TrySetException(ex);
- }
-
- }, null);
- }
- catch (Exception ex)
- {
- taskSource.TrySetException(ex);
- }
-
- return taskSource.Task;
-#endif
- //ThrowIfDisposed();
-
- //if (buffer == null) throw new ArgumentNullException("messageData");
- //if (endPoint == null) throw new ArgumentNullException("endPoint");
-
- //cancellationToken.ThrowIfCancellationRequested();
+ ReceivedBytes = receivedBytes,
+ RemoteEndPoint = ToIpEndPointInfo((IPEndPoint)remoteEndPoint),
+ Buffer = buffer,
+ LocalIPAddress = LocalIPAddress
+ };
+ }
- //var tcs = new TaskCompletionSource<int>();
+ public Task<SocketReceiveResult> ReceiveAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
+ {
+ var result = BeginReceive(buffer, offset, count, _defaultAsyncCallback);
- //cancellationToken.Register(() => tcs.TrySetCanceled());
+ return Task.Factory.FromAsync(result, EndReceive);
+ }
- //_sendSocketAsyncEventArgs.SetBuffer(buffer, 0, size);
- //_sendSocketAsyncEventArgs.RemoteEndPoint = NetworkManager.ToIPEndPoint(endPoint);
- //_currentSendTaskCompletionSource = tcs;
+ public Task<SocketReceiveResult> ReceiveAsync(CancellationToken cancellationToken)
+ {
+ var buffer = new byte[8192];
- //var willRaiseEvent = _Socket.SendAsync(_sendSocketAsyncEventArgs);
+ return ReceiveAsync(buffer, 0, buffer.Length, cancellationToken);
+ }
- //if (!willRaiseEvent)
- //{
- // _sendSocketAsyncEventArgs_Completed(this, _sendSocketAsyncEventArgs);
- //}
+ public Task SendToAsync(byte[] buffer, int offset, int size, IpEndPointInfo endPoint, CancellationToken cancellationToken)
+ {
+ var result = BeginSendTo(buffer, offset, size, endPoint, _defaultAsyncCallback, null);
- //return tcs.Task;
+ return Task.Factory.FromAsync(result, EndSendTo);
}
- public async Task SendWithLockAsync(byte[] buffer, int size, IpEndPointInfo endPoint, CancellationToken cancellationToken)
+ public IAsyncResult BeginSendTo(byte[] buffer, int offset, int size, IpEndPointInfo endPoint, AsyncCallback callback, object state)
{
- ThrowIfDisposed();
+ var ipEndPoint = NetworkManager.ToIPEndPoint(endPoint);
- //await _sendLock.WaitAsync(cancellationToken).ConfigureAwait(false);
+ return _Socket.BeginSendTo(buffer, offset, size, SocketFlags.None, ipEndPoint, callback, state);
+ }
- try
- {
- await SendAsync(buffer, size, endPoint, cancellationToken).ConfigureAwait(false);
- }
- finally
- {
- //_sendLock.Release();
- }
+ public int EndSendTo(IAsyncResult result)
+ {
+ return _Socket.EndSendTo(result);
}
protected override void Dispose(bool disposing)
@@ -274,36 +209,6 @@ namespace Emby.Common.Implementations.Net
return NetworkManager.ToIpEndPointInfo(endpoint);
}
- private void ProcessResponse(IAsyncResult asyncResult)
- {
-#if NET46
- var state = asyncResult.AsyncState as AsyncReceiveState;
- try
- {
- var bytesRead = state.Socket.EndReceiveFrom(asyncResult, ref state.RemoteEndPoint);
-
- var ipEndPoint = state.RemoteEndPoint as IPEndPoint;
- state.TaskCompletionSource.SetResult(
- new SocketReceiveResult
- {
- Buffer = state.Buffer,
- ReceivedBytes = bytesRead,
- RemoteEndPoint = ToIpEndPointInfo(ipEndPoint),
- LocalIPAddress = LocalIPAddress
- }
- );
- }
- catch (ObjectDisposedException)
- {
- state.TaskCompletionSource.SetCanceled();
- }
- catch (Exception ex)
- {
- state.TaskCompletionSource.SetException(ex);
- }
-#endif
- }
-
private class AsyncReceiveState
{
public AsyncReceiveState(Socket socket, EndPoint remoteEndPoint)
diff --git a/Emby.Common.Implementations/Properties/AssemblyInfo.cs b/Emby.Common.Implementations/Properties/AssemblyInfo.cs
index 1a5abcb27..787f18997 100644
--- a/Emby.Common.Implementations/Properties/AssemblyInfo.cs
+++ b/Emby.Common.Implementations/Properties/AssemblyInfo.cs
@@ -2,18 +2,33 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
-// General Information about an assembly is controlled through the following
+// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
+[assembly: AssemblyTitle("Emby.Common.Implementations")]
+[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Emby.Common.Implementations")]
+[assembly: AssemblyCopyright("Copyright © 2017")]
[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("5a27010a-09c6-4e86-93ea-437484c10917")]
+[assembly: Guid("1e37a338-9f57-4b70-bd6d-bb9c591e319b")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")] \ No newline at end of file
diff --git a/Emby.Common.Implementations/Reflection/AssemblyInfo.cs b/Emby.Common.Implementations/Reflection/AssemblyInfo.cs
index 7a92f02d6..87821bf7a 100644
--- a/Emby.Common.Implementations/Reflection/AssemblyInfo.cs
+++ b/Emby.Common.Implementations/Reflection/AssemblyInfo.cs
@@ -9,18 +9,12 @@ namespace Emby.Common.Implementations.Reflection
{
public Stream GetManifestResourceStream(Type type, string resource)
{
-#if NET46
return type.Assembly.GetManifestResourceStream(resource);
-#endif
- return type.GetTypeInfo().Assembly.GetManifestResourceStream(resource);
}
public string[] GetManifestResourceNames(Type type)
{
-#if NET46
return type.Assembly.GetManifestResourceNames();
-#endif
- return type.GetTypeInfo().Assembly.GetManifestResourceNames();
}
public Assembly[] GetCurrentAssemblies()
diff --git a/Emby.Common.Implementations/Serialization/XmlSerializer.cs b/Emby.Common.Implementations/Serialization/XmlSerializer.cs
index 3583f998e..ad2708387 100644
--- a/Emby.Common.Implementations/Serialization/XmlSerializer.cs
+++ b/Emby.Common.Implementations/Serialization/XmlSerializer.cs
@@ -78,18 +78,11 @@ namespace Emby.Common.Implementations.Serialization
/// <param name="stream">The stream.</param>
public void SerializeToStream(object obj, Stream stream)
{
-#if NET46
- using (var writer = new XmlTextWriter(stream, null))
+ using (var writer = new XmlTextWriter(stream, null))
{
writer.Formatting = Formatting.Indented;
SerializeToWriter(obj, writer);
}
-#else
- using (var writer = XmlWriter.Create(stream))
- {
- SerializeToWriter(obj, writer);
- }
-#endif
}
/// <summary>
diff --git a/Emby.Common.Implementations/Xml/XmlReaderSettingsFactory.cs b/Emby.Common.Implementations/Xml/XmlReaderSettingsFactory.cs
index 806290cf4..35c266cdb 100644
--- a/Emby.Common.Implementations/Xml/XmlReaderSettingsFactory.cs
+++ b/Emby.Common.Implementations/Xml/XmlReaderSettingsFactory.cs
@@ -11,9 +11,7 @@ namespace Emby.Common.Implementations.Xml
if (!enableValidation)
{
-#if NET46
settings.ValidationType = ValidationType.None;
-#endif
}
return settings;
diff --git a/Emby.Common.Implementations/packages.config b/Emby.Common.Implementations/packages.config
new file mode 100644
index 000000000..18022eb2e
--- /dev/null
+++ b/Emby.Common.Implementations/packages.config
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="NLog" version="4.4.3" targetFramework="net462" />
+ <package id="ServiceStack.Text" version="4.5.8" targetFramework="net462" />
+ <package id="SharpCompress" version="0.14.0" targetFramework="net462" />
+ <package id="SimpleInjector" version="4.0.7" targetFramework="net462" />
+</packages> \ No newline at end of file
diff --git a/Emby.Common.Implementations/project.json b/Emby.Common.Implementations/project.json
deleted file mode 100644
index ff60c740e..000000000
--- a/Emby.Common.Implementations/project.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "version": "1.0.0-*",
-
- "dependencies": {
-
- },
-
- "frameworks": {
- "net46": {
- "frameworkAssemblies": {
- "System.Collections": "4.0.0.0",
- "System.IO": "4.0.0.0",
- "System.Net": "4.0.0.0",
- "System.Net.Http": "4.0.0.0",
- "System.Net.Primitives": "4.0.0.0",
- "System.Net.Http.WebRequest": "4.0.0.0",
- "System.Reflection": "4.0.0.0",
- "System.Runtime": "4.0.0.0",
- "System.Runtime.Extensions": "4.0.0.0",
- "System.Text.Encoding": "4.0.0.0",
- "System.Threading": "4.0.0.0",
- "System.Threading.Tasks": "4.0.0.0",
- "System.Xml.ReaderWriter": "4.0.0"
- },
- "dependencies": {
- "SimpleInjector": "3.2.4",
- "ServiceStack.Text": "4.5.4",
- "NLog": "4.4.0-betaV15",
- "sharpcompress": "0.14.0",
- "MediaBrowser.Model": {
- "target": "project"
- },
- "MediaBrowser.Common": {
- "target": "project"
- }
- }
- },
- "netstandard1.6": {
- "imports": "dnxcore50",
- "dependencies": {
- "NETStandard.Library": "1.6.1",
- "System.IO.FileSystem.DriveInfo": "4.3.0",
- "System.Diagnostics.Process": "4.3.0",
- "System.Threading.Timer": "4.3.0",
- "System.Net.Requests": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0",
- "System.Xml.XmlSerializer": "4.3.0",
- "System.Net.Http": "4.3.2",
- "System.Net.Primitives": "4.3.0",
- "System.Net.Sockets": "4.3.0",
- "System.Net.NetworkInformation": "4.3.0",
- "System.Net.NameResolution": "4.3.0",
- "System.Runtime.InteropServices.RuntimeInformation": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime.Loader": "4.3.0",
- "SimpleInjector": "3.2.4",
- "ServiceStack.Text.Core": "1.0.27",
- "NLog": "4.4.0-betaV15",
- "sharpcompress": "0.14.0",
- "System.AppDomain": "2.0.11",
- "MediaBrowser.Model": {
- "target": "project"
- },
- "MediaBrowser.Common": {
- "target": "project"
- }
- }
- }
- }
-}
diff --git a/MediaBrowser.Server.Startup.Common/ApplicationPathHelper.cs b/Emby.Server.Core/ApplicationPathHelper.cs
index 254a782db..e83d5444a 100644
--- a/MediaBrowser.Server.Startup.Common/ApplicationPathHelper.cs
+++ b/Emby.Server.Core/ApplicationPathHelper.cs
@@ -2,7 +2,7 @@
using System.Configuration;
using System.IO;
-namespace MediaBrowser.Server.Startup.Common
+namespace Emby.Server.Core
{
public static class ApplicationPathHelper
{
diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/ASN1.cs b/Emby.Server.Core/Cryptography/ASN1.cs
index a25c27073..f5c826436 100644
--- a/MediaBrowser.Server.Startup.Common/Cryptography/ASN1.cs
+++ b/Emby.Server.Core/Cryptography/ASN1.cs
@@ -34,7 +34,8 @@ using System.Collections;
using System.IO;
using System.Text;
-namespace Emby.Common.Implementations.Security {
+namespace Emby.Server.Core.Cryptography
+{
// References:
// a. ITU ASN.1 standards (free download)
diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/ASN1Convert.cs b/Emby.Server.Core/Cryptography/ASN1Convert.cs
index 8a2a487c8..851d36dc7 100644
--- a/MediaBrowser.Server.Startup.Common/Cryptography/ASN1Convert.cs
+++ b/Emby.Server.Core/Cryptography/ASN1Convert.cs
@@ -34,7 +34,7 @@ using System.Globalization;
using System.Security.Cryptography;
using System.Text;
-namespace Emby.Common.Implementations.Security
+namespace Emby.Server.Core.Cryptography
{
// References:
diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/BitConverterLE.cs b/Emby.Server.Core/Cryptography/BitConverterLE.cs
index 240c958a3..34e6bf6dc 100644
--- a/MediaBrowser.Server.Startup.Common/Cryptography/BitConverterLE.cs
+++ b/Emby.Server.Core/Cryptography/BitConverterLE.cs
@@ -29,7 +29,7 @@
using System;
-namespace Emby.Common.Implementations.Security
+namespace Emby.Server.Core.Cryptography
{
internal sealed class BitConverterLE
{
diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/CertificateGenerator.cs b/Emby.Server.Core/Cryptography/CertificateGenerator.cs
index 4f5b3d004..2600d7470 100644
--- a/MediaBrowser.Server.Startup.Common/Cryptography/CertificateGenerator.cs
+++ b/Emby.Server.Core/Cryptography/CertificateGenerator.cs
@@ -3,7 +3,7 @@ using System;
using System.Collections;
using System.Security.Cryptography;
-namespace Emby.Common.Implementations.Security
+namespace Emby.Server.Core.Cryptography
{
public class CertificateGenerator
{
diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/CryptoConvert.cs b/Emby.Server.Core/Cryptography/CryptoConvert.cs
index c6e466534..70a91bfff 100644
--- a/MediaBrowser.Server.Startup.Common/Cryptography/CryptoConvert.cs
+++ b/Emby.Server.Core/Cryptography/CryptoConvert.cs
@@ -32,7 +32,7 @@ using System.Globalization;
using System.Security.Cryptography;
using System.Text;
-namespace Emby.Common.Implementations.Security
+namespace Emby.Server.Core.Cryptography
{
public sealed class CryptoConvert {
diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/PKCS1.cs b/Emby.Server.Core/Cryptography/PKCS1.cs
index 85bf9db38..24c0708c5 100644
--- a/MediaBrowser.Server.Startup.Common/Cryptography/PKCS1.cs
+++ b/Emby.Server.Core/Cryptography/PKCS1.cs
@@ -31,7 +31,7 @@
using System;
using System.Security.Cryptography;
-namespace Emby.Common.Implementations.Security
+namespace Emby.Server.Core.Cryptography
{
// References:
diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/PKCS12.cs b/Emby.Server.Core/Cryptography/PKCS12.cs
index 2205a7160..50f3776d9 100644
--- a/MediaBrowser.Server.Startup.Common/Cryptography/PKCS12.cs
+++ b/Emby.Server.Core/Cryptography/PKCS12.cs
@@ -37,7 +37,7 @@ using System.IO;
using System.Security.Cryptography;
using System.Text;
-namespace Emby.Common.Implementations.Security
+namespace Emby.Server.Core.Cryptography
{
public class PKCS5 {
diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/PKCS7.cs b/Emby.Server.Core/Cryptography/PKCS7.cs
index 1b1a3295b..475854500 100644
--- a/MediaBrowser.Server.Startup.Common/Cryptography/PKCS7.cs
+++ b/Emby.Server.Core/Cryptography/PKCS7.cs
@@ -33,7 +33,7 @@ using System;
using System.Collections;
using System.Security.Cryptography;
-namespace Emby.Common.Implementations.Security
+namespace Emby.Server.Core.Cryptography
{
public sealed class PKCS7 {
diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/PKCS8.cs b/Emby.Server.Core/Cryptography/PKCS8.cs
index b58ebdaf9..7e9a27298 100644
--- a/MediaBrowser.Server.Startup.Common/Cryptography/PKCS8.cs
+++ b/Emby.Server.Core/Cryptography/PKCS8.cs
@@ -33,7 +33,7 @@ using System;
using System.Collections;
using System.Security.Cryptography;
-namespace Emby.Common.Implementations.Security
+namespace Emby.Server.Core.Cryptography
{
public sealed class PKCS8 {
diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/PfxGenerator.cs b/Emby.Server.Core/Cryptography/PfxGenerator.cs
index 3f9b90ac1..2d1dd649e 100644
--- a/MediaBrowser.Server.Startup.Common/Cryptography/PfxGenerator.cs
+++ b/Emby.Server.Core/Cryptography/PfxGenerator.cs
@@ -2,7 +2,7 @@
using System.Collections;
using System.Security.Cryptography;
-namespace Emby.Common.Implementations.Security
+namespace Emby.Server.Core.Cryptography
{
public class PFXGenerator
{
diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/X501Name.cs b/Emby.Server.Core/Cryptography/X501Name.cs
index 93e1a6bef..3318f95e2 100644
--- a/MediaBrowser.Server.Startup.Common/Cryptography/X501Name.cs
+++ b/Emby.Server.Core/Cryptography/X501Name.cs
@@ -31,7 +31,7 @@ using System;
using System.Globalization;
using System.Text;
-namespace Emby.Common.Implementations.Security
+namespace Emby.Server.Core.Cryptography
{
// References:
diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/X509Builder.cs b/Emby.Server.Core/Cryptography/X509Builder.cs
index e16855959..a2e292350 100644
--- a/MediaBrowser.Server.Startup.Common/Cryptography/X509Builder.cs
+++ b/Emby.Server.Core/Cryptography/X509Builder.cs
@@ -33,7 +33,7 @@ using System;
using System.Globalization;
using System.Security.Cryptography;
-namespace Emby.Common.Implementations.Security
+namespace Emby.Server.Core.Cryptography
{
public abstract class X509Builder {
diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/X509Certificate.cs b/Emby.Server.Core/Cryptography/X509Certificate.cs
index f49445f0e..3de58cfee 100644
--- a/MediaBrowser.Server.Startup.Common/Cryptography/X509Certificate.cs
+++ b/Emby.Server.Core/Cryptography/X509Certificate.cs
@@ -34,7 +34,7 @@ using System.Security.Cryptography;
using System.Security.Permissions;
using System.Text;
-namespace Emby.Common.Implementations.Security
+namespace Emby.Server.Core.Cryptography
{
// References:
diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/X509CertificateBuilder.cs b/Emby.Server.Core/Cryptography/X509CertificateBuilder.cs
index fb6f8ec72..cecff6578 100644
--- a/MediaBrowser.Server.Startup.Common/Cryptography/X509CertificateBuilder.cs
+++ b/Emby.Server.Core/Cryptography/X509CertificateBuilder.cs
@@ -32,7 +32,7 @@
using System;
using System.Security.Cryptography;
-namespace Emby.Common.Implementations.Security
+namespace Emby.Server.Core.Cryptography
{
// From RFC3280
/*
diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/X509CertificateCollection.cs b/Emby.Server.Core/Cryptography/X509CertificateCollection.cs
index 5d353f9cf..a129bfc1a 100644
--- a/MediaBrowser.Server.Startup.Common/Cryptography/X509CertificateCollection.cs
+++ b/Emby.Server.Core/Cryptography/X509CertificateCollection.cs
@@ -31,7 +31,7 @@
using System;
using System.Collections;
-namespace Emby.Common.Implementations.Security
+namespace Emby.Server.Core.Cryptography
{
[Serializable]
diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/X509Extension.cs b/Emby.Server.Core/Cryptography/X509Extension.cs
index e82f52bac..36b17deba 100644
--- a/MediaBrowser.Server.Startup.Common/Cryptography/X509Extension.cs
+++ b/Emby.Server.Core/Cryptography/X509Extension.cs
@@ -31,7 +31,7 @@ using System;
using System.Globalization;
using System.Text;
-namespace Emby.Common.Implementations.Security
+namespace Emby.Server.Core.Cryptography
{
/*
* Extension ::= SEQUENCE {
diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/X509Extensions.cs b/Emby.Server.Core/Cryptography/X509Extensions.cs
index c7d5f0046..018a04d79 100644
--- a/MediaBrowser.Server.Startup.Common/Cryptography/X509Extensions.cs
+++ b/Emby.Server.Core/Cryptography/X509Extensions.cs
@@ -32,7 +32,7 @@
using System;
using System.Collections;
-namespace Emby.Common.Implementations.Security
+namespace Emby.Server.Core.Cryptography
{
/*
* Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
diff --git a/MediaBrowser.Server.Startup.Common/Cryptography/X520Attributes.cs b/Emby.Server.Core/Cryptography/X520Attributes.cs
index 5062bf80a..da7fd2b82 100644
--- a/MediaBrowser.Server.Startup.Common/Cryptography/X520Attributes.cs
+++ b/Emby.Server.Core/Cryptography/X520Attributes.cs
@@ -30,7 +30,7 @@
using System;
using System.Text;
-namespace Emby.Common.Implementations.Security
+namespace Emby.Server.Core.Cryptography
{
// References:
diff --git a/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj b/Emby.Server.Core/Emby.Server.Core.csproj
index 5955d4c96..6c8daf9c9 100644
--- a/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj
+++ b/Emby.Server.Core/Emby.Server.Core.csproj
@@ -1,17 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProjectGuid>{B90AB8F2-1BFF-4568-A3FD-2A338A435A75}</ProjectGuid>
+ <ProjectGuid>{776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>MediaBrowser.Server.Startup.Common</RootNamespace>
- <AssemblyName>MediaBrowser.Server.Startup.Common</AssemblyName>
- <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
+ <RootNamespace>Emby.Server.Core</RootNamespace>
+ <AssemblyName>Emby.Server.Core</AssemblyName>
+ <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
- <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
@@ -25,7 +24,7 @@
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugType>None</DebugType>
+ <DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
@@ -34,13 +33,18 @@
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<ItemGroup>
- <Reference Include="Emby.Server.Core">
- <HintPath>..\ThirdParty\emby\Emby.Server.Core.dll</HintPath>
- </Reference>
<Reference Include="Microsoft.IO.RecyclableMemoryStream, Version=1.2.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IO.RecyclableMemoryStream.1.2.2\lib\net45\Microsoft.IO.RecyclableMemoryStream.dll</HintPath>
<Private>True</Private>
</Reference>
+ <Reference Include="ServiceStack.Text, Version=4.5.8.0, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\packages\ServiceStack.Text.4.5.8\lib\net45\ServiceStack.Text.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="SimpleInjector, Version=4.0.7.0, Culture=neutral, PublicKeyToken=984cb50dea722e99, processorArchitecture=MSIL">
+ <HintPath>..\packages\SimpleInjector.4.0.7\lib\net45\SimpleInjector.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
@@ -48,12 +52,14 @@
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
+ <Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\SharedVersion.cs">
<Link>Properties\SharedVersion.cs</Link>
</Compile>
+ <Compile Include="ApplicationHost.cs" />
<Compile Include="ApplicationPathHelper.cs" />
<Compile Include="Cryptography\ASN1.cs" />
<Compile Include="Cryptography\ASN1Convert.cs" />
@@ -73,16 +79,41 @@
<Compile Include="Cryptography\X509Extension.cs" />
<Compile Include="Cryptography\X509Extensions.cs" />
<Compile Include="Cryptography\X520Attributes.cs" />
+ <Compile Include="EntryPoints\ExternalPortForwarding.cs" />
+ <Compile Include="HttpServerFactory.cs" />
+ <Compile Include="IO\LibraryMonitor.cs" />
<Compile Include="IO\MemoryStreamProvider.cs" />
+ <Compile Include="Localization\TextLocalizer.cs" />
+ <Compile Include="Logging\ConsoleLogger.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SystemEvents.cs" />
<Compile Include="UpdateLevelHelper.cs" />
</ItemGroup>
<ItemGroup>
+ <ProjectReference Include="..\Emby.Common.Implementations\Emby.Common.Implementations.csproj">
+ <Project>{1e37a338-9f57-4b70-bd6d-bb9c591e319b}</Project>
+ <Name>Emby.Common.Implementations</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Emby.Dlna\Emby.Dlna.csproj">
+ <Project>{805844ab-e92f-45e6-9d99-4f6d48d129a5}</Project>
+ <Name>Emby.Dlna</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Emby.Drawing\Emby.Drawing.csproj">
+ <Project>{08fff49b-f175-4807-a2b5-73b0ebd9f716}</Project>
+ <Name>Emby.Drawing</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Emby.Photos\Emby.Photos.csproj">
+ <Project>{89ab4548-770d-41fd-a891-8daff44f452c}</Project>
+ <Name>Emby.Photos</Name>
+ </ProjectReference>
<ProjectReference Include="..\Emby.Server.Implementations\Emby.Server.Implementations.csproj">
<Project>{e383961b-9356-4d5d-8233-9a1079d03055}</Project>
<Name>Emby.Server.Implementations</Name>
</ProjectReference>
+ <ProjectReference Include="..\MediaBrowser.Api\MediaBrowser.Api.csproj">
+ <Project>{4fd51ac5-2c16-4308-a993-c3a84f3b4582}</Project>
+ <Name>MediaBrowser.Api</Name>
+ </ProjectReference>
<ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
<Project>{9142eefa-7570-41e1-bfcc-468bb571af2f}</Project>
<Name>MediaBrowser.Common</Name>
@@ -91,16 +122,51 @@
<Project>{17e1f4e6-8abd-4fe5-9ecf-43d4b6087ba2}</Project>
<Name>MediaBrowser.Controller</Name>
</ProjectReference>
+ <ProjectReference Include="..\MediaBrowser.LocalMetadata\MediaBrowser.LocalMetadata.csproj">
+ <Project>{7ef9f3e0-697d-42f3-a08f-19deb5f84392}</Project>
+ <Name>MediaBrowser.LocalMetadata</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\MediaBrowser.MediaEncoding\MediaBrowser.MediaEncoding.csproj">
+ <Project>{0bd82fa6-eb8a-4452-8af5-74f9c3849451}</Project>
+ <Name>MediaBrowser.MediaEncoding</Name>
+ </ProjectReference>
<ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj">
<Project>{7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}</Project>
<Name>MediaBrowser.Model</Name>
</ProjectReference>
+ <ProjectReference Include="..\MediaBrowser.Providers\MediaBrowser.Providers.csproj">
+ <Project>{442b5058-dcaf-4263-bb6a-f21e31120a1b}</Project>
+ <Name>MediaBrowser.Providers</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\MediaBrowser.Server.Implementations\MediaBrowser.Server.Implementations.csproj">
+ <Project>{2e781478-814d-4a48-9d80-bff206441a65}</Project>
+ <Name>MediaBrowser.Server.Implementations</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\MediaBrowser.WebDashboard\MediaBrowser.WebDashboard.csproj">
+ <Project>{5624b7b5-b5a7-41d8-9f10-cc5611109619}</Project>
+ <Name>MediaBrowser.WebDashboard</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\MediaBrowser.XbmcMetadata\MediaBrowser.XbmcMetadata.csproj">
+ <Project>{23499896-b135-4527-8574-c26e926ea99e}</Project>
+ <Name>MediaBrowser.XbmcMetadata</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Mono.Nat\Mono.Nat.csproj">
+ <Project>{cb7f2326-6497-4a3d-ba03-48513b17a7be}</Project>
+ <Name>Mono.Nat</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\OpenSubtitlesHandler\OpenSubtitlesHandler.csproj">
+ <Project>{4a4402d4-e910-443b-b8fc-2c18286a2ca0}</Project>
+ <Name>OpenSubtitlesHandler</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\SocketHttpListener\SocketHttpListener.csproj">
+ <Project>{1d74413b-e7cf-455b-b021-f52bdf881542}</Project>
+ <Name>SocketHttpListener</Name>
+ </ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
- <ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/Emby.Server.Core/Emby.Server.Core.xproj b/Emby.Server.Core/Emby.Server.Core.xproj
deleted file mode 100644
index fefaa6284..000000000
--- a/Emby.Server.Core/Emby.Server.Core.xproj
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
- <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
- </PropertyGroup>
- <Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.Props" Condition="'$(VSToolsPath)' != ''" />
- <PropertyGroup Label="Globals">
- <ProjectGuid>65aa7d67-8059-40cd-91f1-16d02687226c</ProjectGuid>
- <RootNamespace>Emby.Server.Core</RootNamespace>
- <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">.\obj</BaseIntermediateOutputPath>
- <OutputPath Condition="'$(OutputPath)'=='' ">.\bin\</OutputPath>
- <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
- </PropertyGroup>
- <PropertyGroup>
- <SchemaVersion>2.0</SchemaVersion>
- </PropertyGroup>
- <ItemGroup>
- <ProjectReference Include="..\Emby.Drawing\Emby.Drawing.csproj" />
- <ProjectReference Include="..\Emby.Photos\Emby.Photos.csproj" />
- <ProjectReference Include="..\MediaBrowser.Api\MediaBrowser.Api.csproj" />
- <ProjectReference Include="..\MediaBrowser.XbmcMetadata\MediaBrowser.XbmcMetadata.csproj" />
- <ProjectReference Include="..\MediaBrowser.LocalMetadata\MediaBrowser.LocalMetadata.csproj" />
- <ProjectReference Include="..\MediaBrowser.WebDashboard\MediaBrowser.WebDashboard.csproj" />
- <ProjectReference Include="..\MediaBrowser.MediaEncoding\MediaBrowser.MediaEncoding.csproj" />
- <ProjectReference Include="..\Emby.Dlna\Emby.Dlna.csproj" />
- <ProjectReference Include="..\Emby.Server.Implementations\Emby.Server.Implementations.csproj" />
- <ProjectReference Include="..\MediaBrowser.Controller\MediaBrowser.Controller.csproj" />
- <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj" />
- <ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj" />
- </ItemGroup>
- <Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.targets" Condition="'$(VSToolsPath)' != ''" />
-</Project> \ No newline at end of file
diff --git a/Emby.Server.Core/HttpServerFactory.cs b/Emby.Server.Core/HttpServerFactory.cs
index dfd435c33..c30355f7a 100644
--- a/Emby.Server.Core/HttpServerFactory.cs
+++ b/Emby.Server.Core/HttpServerFactory.cs
@@ -3,6 +3,7 @@ using System.IO;
using System.Net.Security;
using System.Net.Sockets;
using System.Security.Cryptography.X509Certificates;
+using System.Threading;
using System.Threading.Tasks;
using Emby.Common.Implementations.Net;
using Emby.Server.Implementations.HttpServer;
@@ -33,10 +34,10 @@ namespace Emby.Server.Core
/// <returns>IHttpServer.</returns>
public static IHttpServer CreateServer(IServerApplicationHost applicationHost,
ILogManager logManager,
- IServerConfigurationManager config,
+ IServerConfigurationManager config,
INetworkManager networkmanager,
IMemoryStreamFactory streamProvider,
- string serverName,
+ string serverName,
string defaultRedirectpath,
ITextEncoding textEncoding,
ISocketFactory socketFactory,
@@ -51,16 +52,16 @@ namespace Emby.Server.Core
var logger = logManager.GetLogger("HttpServer");
return new HttpListenerHost(applicationHost,
- logger,
- config,
- serverName,
- defaultRedirectpath,
- networkmanager,
- streamProvider,
- textEncoding,
- socketFactory,
- cryptoProvider,
- json,
+ logger,
+ config,
+ serverName,
+ defaultRedirectpath,
+ networkmanager,
+ streamProvider,
+ textEncoding,
+ socketFactory,
+ cryptoProvider,
+ json,
xml,
environment,
certificate,
@@ -82,7 +83,7 @@ namespace Emby.Server.Core
{
var netSocket = (NetAcceptSocket)acceptSocket;
- return new NetworkStream(netSocket.Socket, ownsSocket);
+ return new WritableNetworkStream(netSocket.Socket, ownsSocket);
}
public Task AuthenticateSslStreamAsServer(Stream stream, ICertificate certificate)
@@ -108,4 +109,80 @@ namespace Emby.Server.Core
public X509Certificate X509Certificate { get; private set; }
}
+
+ public class WritableNetworkStream : Stream
+ {
+ private readonly Socket _socket;
+
+ public WritableNetworkStream(Socket socket, bool ownsSocket)
+ {
+ _socket = socket;
+ }
+
+ public override void Flush()
+ {
+ }
+
+ public override bool CanRead
+ {
+ get { return true; }
+ }
+ public override bool CanSeek
+ {
+ get { return false; }
+ }
+ public override bool CanWrite
+ {
+ get { return true; }
+ }
+ public override long Length
+ {
+ get { throw new NotImplementedException(); }
+ }
+ public override long Position
+ {
+ get { throw new NotImplementedException(); }
+ set { throw new NotImplementedException(); }
+ }
+
+ public override void Write(byte[] buffer, int offset, int count)
+ {
+ _socket.Send(buffer, offset, count, SocketFlags.None);
+ }
+
+ public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
+ {
+ return _socket.BeginSend(buffer, offset, count, SocketFlags.None, callback, state);
+ }
+
+ public override void EndWrite(IAsyncResult asyncResult)
+ {
+ _socket.EndSend(asyncResult);
+ }
+
+ public override void SetLength(long value)
+ {
+ throw new NotImplementedException();
+ }
+
+ public override long Seek(long offset, SeekOrigin origin)
+ {
+ throw new NotImplementedException();
+ }
+
+ public override int Read(byte[] buffer, int offset, int count)
+ {
+ return _socket.Receive(buffer, offset, count, SocketFlags.None);
+ }
+
+ public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
+ {
+ return _socket.BeginReceive(buffer, offset, count, SocketFlags.None, callback, state);
+ }
+
+ public override int EndRead(IAsyncResult asyncResult)
+ {
+ return _socket.EndReceive(asyncResult);
+ }
+ }
}
diff --git a/MediaBrowser.Server.Startup.Common/IO/MemoryStreamProvider.cs b/Emby.Server.Core/IO/MemoryStreamProvider.cs
index 3ca0f4db5..f6dd1ecbc 100644
--- a/MediaBrowser.Server.Startup.Common/IO/MemoryStreamProvider.cs
+++ b/Emby.Server.Core/IO/MemoryStreamProvider.cs
@@ -2,7 +2,7 @@
using MediaBrowser.Model.IO;
using Microsoft.IO;
-namespace MediaBrowser.Server.Startup.Common.IO
+namespace Emby.Server.Core.IO
{
public class RecyclableMemoryStreamProvider : IMemoryStreamFactory
{
diff --git a/Emby.Server.Core/Properties/AssemblyInfo.cs b/Emby.Server.Core/Properties/AssemblyInfo.cs
index 69df3d58d..ead042981 100644
--- a/Emby.Server.Core/Properties/AssemblyInfo.cs
+++ b/Emby.Server.Core/Properties/AssemblyInfo.cs
@@ -2,18 +2,33 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
-// General Information about an assembly is controlled through the following
+// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
+[assembly: AssemblyTitle("Emby.Server.Core")]
+[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Emby.Server.Core")]
+[assembly: AssemblyCopyright("Copyright © 2017")]
[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("65aa7d67-8059-40cd-91f1-16d02687226c")]
+[assembly: Guid("776b9f0c-5195-45e3-9a36-1cc1f0d8e0b0")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")] \ No newline at end of file
diff --git a/MediaBrowser.Server.Startup.Common/SystemEvents.cs b/Emby.Server.Core/SystemEvents.cs
index 8d5cd4ad8..8d5cd4ad8 100644
--- a/MediaBrowser.Server.Startup.Common/SystemEvents.cs
+++ b/Emby.Server.Core/SystemEvents.cs
diff --git a/MediaBrowser.Server.Startup.Common/UpdateLevelHelper.cs b/Emby.Server.Core/UpdateLevelHelper.cs
index 7f3e27d91..e6ca37700 100644
--- a/MediaBrowser.Server.Startup.Common/UpdateLevelHelper.cs
+++ b/Emby.Server.Core/UpdateLevelHelper.cs
@@ -1,9 +1,7 @@
-using System;
-using System.Configuration;
-using MediaBrowser.Common.Configuration;
+using MediaBrowser.Common.Configuration;
using MediaBrowser.Model.Updates;
-namespace MediaBrowser.Server.Startup.Common
+namespace Emby.Server.Core
{
public static class UpdateLevelHelper
{
diff --git a/MediaBrowser.Server.Startup.Common/app.config b/Emby.Server.Core/app.config
index e5b8d3d02..61096febb 100644
--- a/MediaBrowser.Server.Startup.Common/app.config
+++ b/Emby.Server.Core/app.config
@@ -3,8 +3,8 @@
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
- <assemblyIdentity name="System.IO.FileSystem.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
- <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
+ <assemblyIdentity name="SimpleInjector" publicKeyToken="984cb50dea722e99" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-4.0.7.0" newVersion="4.0.7.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
diff --git a/Emby.Server.Core/packages.config b/Emby.Server.Core/packages.config
new file mode 100644
index 000000000..24e8a26b6
--- /dev/null
+++ b/Emby.Server.Core/packages.config
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="Microsoft.IO.RecyclableMemoryStream" version="1.2.2" targetFramework="net462" />
+ <package id="ServiceStack.Text" version="4.5.8" targetFramework="net462" />
+ <package id="SimpleInjector" version="4.0.7" targetFramework="net462" />
+</packages> \ No newline at end of file
diff --git a/Emby.Server.Core/project.json b/Emby.Server.Core/project.json
deleted file mode 100644
index fd4f9d6cf..000000000
--- a/Emby.Server.Core/project.json
+++ /dev/null
@@ -1,125 +0,0 @@
-{
- "version": "1.0.0-*",
-
- "dependencies": {
-
- },
-
- "frameworks": {
- "net46": {
- "frameworkAssemblies": {
- "System.Runtime": "4.0.0"
- },
- "dependencies": {
- "MediaBrowser.Model": {
- "target": "project"
- },
- "MediaBrowser.Common": {
- "target": "project"
- },
- "MediaBrowser.Controller": {
- "target": "project"
- },
- "Emby.Common.Implementations": {
- "target": "project"
- },
- "Mono.Nat": {
- "target": "project"
- },
- "Emby.Server.Implementations": {
- "target": "project"
- },
- "MediaBrowser.Server.Implementations": {
- "target": "project"
- },
- "Emby.Dlna": {
- "target": "project"
- },
- "Emby.Photos": {
- "target": "project"
- },
- "MediaBrowser.Api": {
- "target": "project"
- },
- "MediaBrowser.MediaEncoding": {
- "target": "project"
- },
- "MediaBrowser.XbmcMetadata": {
- "target": "project"
- },
- "MediaBrowser.LocalMetadata": {
- "target": "project"
- },
- "MediaBrowser.WebDashboard": {
- "target": "project"
- },
- "Emby.Drawing": {
- "target": "project"
- },
- "SocketHttpListener.Portable": {
- "target": "project"
- }
- }
- },
- "netstandard1.6": {
- "imports": "dnxcore50",
- "dependencies": {
- "NETStandard.Library": "1.6.1",
- "System.AppDomain": "2.0.11",
- "System.Globalization.Extensions": "4.3.0",
- "System.IO.FileSystem.Watcher": "4.3.0",
- "System.Net.Security": "4.3.1",
- "System.Security.Cryptography.X509Certificates": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "MediaBrowser.Model": {
- "target": "project"
- },
- "MediaBrowser.Common": {
- "target": "project"
- },
- "MediaBrowser.Controller": {
- "target": "project"
- },
- "Emby.Common.Implementations": {
- "target": "project"
- },
- "Mono.Nat": {
- "target": "project"
- },
- "Emby.Server.Implementations": {
- "target": "project"
- },
- "MediaBrowser.Server.Implementations": {
- "target": "project"
- },
- "Emby.Dlna": {
- "target": "project"
- },
- "Emby.Photos": {
- "target": "project"
- },
- "MediaBrowser.Api": {
- "target": "project"
- },
- "MediaBrowser.MediaEncoding": {
- "target": "project"
- },
- "MediaBrowser.XbmcMetadata": {
- "target": "project"
- },
- "MediaBrowser.LocalMetadata": {
- "target": "project"
- },
- "MediaBrowser.WebDashboard": {
- "target": "project"
- },
- "Emby.Drawing": {
- "target": "project"
- },
- "SocketHttpListener.Portable": {
- "target": "project"
- }
- }
- }
- }
-}
diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
index 7812cfb3c..49ba6c9f3 100644
--- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
@@ -1245,10 +1245,6 @@ namespace Emby.Server.Implementations.Data
{
if (_config.Configuration.SkipDeserializationForBasicTypes)
{
- if (type == typeof(Person))
- {
- return false;
- }
if (type == typeof(Channel))
{
return false;
@@ -1267,6 +1263,10 @@ namespace Emby.Server.Implementations.Data
}
}
+ if (type == typeof(Person))
+ {
+ return false;
+ }
if (type == typeof(MusicGenre))
{
return false;
@@ -5276,7 +5276,6 @@ namespace Emby.Server.Implementations.Data
NameLessThan = query.NameLessThan,
NameStartsWith = query.NameStartsWith,
NameStartsWithOrGreater = query.NameStartsWithOrGreater,
- AlbumArtistStartsWithOrGreater = query.AlbumArtistStartsWithOrGreater,
Tags = query.Tags,
OfficialRatings = query.OfficialRatings,
GenreIds = query.GenreIds,
diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
index b2f1f0ceb..ff3a983db 100644
--- a/Emby.Server.Implementations/Emby.Server.Implementations.csproj
+++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
@@ -10,9 +10,8 @@
<RootNamespace>Emby.Server.Implementations</RootNamespace>
<AssemblyName>Emby.Server.Implementations</AssemblyName>
<FileAlignment>512</FileAlignment>
- <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
- <TargetFrameworkProfile>Profile7</TargetFrameworkProfile>
- <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <TargetFrameworkProfile />
+ <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -291,9 +290,9 @@
<Project>{2e781478-814d-4a48-9d80-bff206441a65}</Project>
<Name>MediaBrowser.Server.Implementations</Name>
</ProjectReference>
- <ProjectReference Include="..\SocketHttpListener.Portable\SocketHttpListener.Portable.csproj">
- <Project>{4f26d5d8-a7b0-42b3-ba42-7cb7d245934e}</Project>
- <Name>SocketHttpListener.Portable</Name>
+ <ProjectReference Include="..\SocketHttpListener\SocketHttpListener.csproj">
+ <Project>{1d74413b-e7cf-455b-b021-f52bdf881542}</Project>
+ <Name>SocketHttpListener</Name>
</ProjectReference>
<Reference Include="Emby.XmlTv, Version=1.0.6299.28292, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Emby.XmlTv.1.0.8\lib\portable-net45+win8\Emby.XmlTv.dll</HintPath>
@@ -313,6 +312,17 @@
</Reference>
</ItemGroup>
<ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Runtime.Serialization" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
<EmbeddedResource Include="Localization\Core\ar.json" />
<EmbeddedResource Include="Localization\Core\bg-BG.json" />
<EmbeddedResource Include="Localization\Core\ca.json" />
@@ -410,7 +420,7 @@
<ItemGroup>
<EmbeddedResource Include="Localization\Ratings\uk.txt" />
</ItemGroup>
- <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
diff --git a/Emby.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpRequest.cs b/Emby.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpRequest.cs
index b3fcde745..2dfe6a9e3 100644
--- a/Emby.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpRequest.cs
+++ b/Emby.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpRequest.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.IO;
-using System.Net;
using System.Text;
using Emby.Server.Implementations.HttpServer;
using Emby.Server.Implementations.HttpServer.SocketSharp;
@@ -374,7 +373,7 @@ namespace Emby.Server.Implementations.HttpServer.SocketSharp
this.pathInfo = request.RawUrl;
}
- this.pathInfo = WebUtility.UrlDecode(pathInfo);
+ this.pathInfo = System.Net.WebUtility.UrlDecode(pathInfo);
this.pathInfo = NormalizePathInfo(pathInfo, mode);
}
return this.pathInfo;
@@ -440,7 +439,7 @@ namespace Emby.Server.Implementations.HttpServer.SocketSharp
cookies = new Dictionary<string, System.Net.Cookie>();
foreach (var cookie in this.request.Cookies)
{
- var httpCookie = (Cookie) cookie;
+ var httpCookie = (System.Net.Cookie) cookie;
cookies[httpCookie.Name] = new System.Net.Cookie(httpCookie.Name, httpCookie.Value, httpCookie.Path, httpCookie.Domain);
}
}
diff --git a/Emby.Server.Implementations/IO/FileRefresher.cs b/Emby.Server.Implementations/IO/FileRefresher.cs
index edff25156..885cfa3c8 100644
--- a/Emby.Server.Implementations/IO/FileRefresher.cs
+++ b/Emby.Server.Implementations/IO/FileRefresher.cs
@@ -231,7 +231,7 @@ namespace Emby.Server.Implementations.IO
private bool IsFileLocked(string path)
{
- if (_environmentInfo.OperatingSystem != OperatingSystem.Windows)
+ if (_environmentInfo.OperatingSystem != MediaBrowser.Model.System.OperatingSystem.Windows)
{
// Causing lockups on linux
return false;
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs
index 125db7fd6..394e357c7 100644
--- a/Emby.Server.Implementations/Library/LibraryManager.cs
+++ b/Emby.Server.Implementations/Library/LibraryManager.cs
@@ -1086,12 +1086,6 @@ namespace Emby.Server.Implementations.Library
try
{
await PerformLibraryValidation(progress, cancellationToken).ConfigureAwait(false);
-
- if (!ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey)
- {
- ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey = true;
- ConfigurationManager.SaveConfiguration();
- }
}
finally
{
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs
index 50cb68a95..2afc3744f 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs
@@ -511,8 +511,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
}
// The UDP method is not working reliably on OSX, and on BSD it hasn't been tested yet
- var enableHttpStream = _environment.OperatingSystem == OperatingSystem.OSX
- || _environment.OperatingSystem == OperatingSystem.BSD;
+ var enableHttpStream = _environment.OperatingSystem == MediaBrowser.Model.System.OperatingSystem.OSX
+ || _environment.OperatingSystem == MediaBrowser.Model.System.OperatingSystem.BSD;
enableHttpStream = true;
if (enableHttpStream)
{
@@ -597,10 +597,12 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
// Need a way to set the Receive timeout on the socket otherwise this might never timeout?
try
{
- await udpClient.SendAsync(discBytes, discBytes.Length, new IpEndPointInfo(new IpAddressInfo("255.255.255.255", IpAddressFamily.InterNetwork), 65001), cancellationToken);
+ await udpClient.SendToAsync(discBytes, 0, discBytes.Length, new IpEndPointInfo(new IpAddressInfo("255.255.255.255", IpAddressFamily.InterNetwork), 65001), cancellationToken);
+ var receiveBuffer = new byte[8192];
+
while (!cancellationToken.IsCancellationRequested)
{
- var response = await udpClient.ReceiveAsync(cancellationToken).ConfigureAwait(false);
+ var response = await udpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false);
var deviceIp = response.RemoteEndPoint.IpAddress.Address;
// check to make sure we have enough bytes received to be a valid message and make sure the 2nd byte is the discover reply byte
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs
index 3202b7313..4dd6e3c71 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs
@@ -114,7 +114,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
var ipEndPoint = new IpEndPointInfo(remoteIp, HdHomeRunPort);
var lockkeyMsg = CreateGetMessage(tuner, "lockkey");
- await socket.SendAsync(lockkeyMsg, lockkeyMsg.Length, ipEndPoint, cancellationToken);
+ await socket.SendToAsync(lockkeyMsg, 0, lockkeyMsg.Length, ipEndPoint, cancellationToken);
var response = await socket.ReceiveAsync(cancellationToken).ConfigureAwait(false);
string returnVal;
ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal);
@@ -128,6 +128,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
using (var tcpClient = _socketFactory.CreateTcpSocket(_remoteIp, HdHomeRunPort))
{
+ var receiveBuffer = new byte[8192];
+
if (!_lockkey.HasValue)
{
var rand = new Random();
@@ -144,8 +146,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
_activeTuner = i;
var lockKeyString = String.Format("{0:d}", _lockkey.Value);
var lockkeyMsg = CreateSetMessage(i, "lockkey", lockKeyString, null);
- await tcpClient.SendAsync(lockkeyMsg, lockkeyMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false);
- var response = await tcpClient.ReceiveAsync(cancellationToken).ConfigureAwait(false);
+ await tcpClient.SendToAsync(lockkeyMsg, 0, lockkeyMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false);
+ var response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false);
string returnVal;
// parse response to make sure it worked
if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal))
@@ -155,8 +157,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
foreach(Tuple<string,string> command in commandList)
{
var channelMsg = CreateSetMessage(i, command.Item1, command.Item2, _lockkey.Value);
- await tcpClient.SendAsync(channelMsg, channelMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false);
- response = await tcpClient.ReceiveAsync(cancellationToken).ConfigureAwait(false);
+ await tcpClient.SendToAsync(channelMsg, 0, channelMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false);
+ response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false);
// parse response to make sure it worked
if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal))
{
@@ -169,8 +171,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
var targetValue = String.Format("rtp://{0}:{1}", localIp, localPort);
var targetMsg = CreateSetMessage(i, "target", targetValue, _lockkey.Value);
- await tcpClient.SendAsync(targetMsg, targetMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false);
- response = await tcpClient.ReceiveAsync(cancellationToken).ConfigureAwait(false);
+ await tcpClient.SendToAsync(targetMsg, 0, targetMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false);
+ response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false);
// parse response to make sure it worked
if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal))
{
@@ -191,11 +193,13 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
using (var tcpClient = _socketFactory.CreateTcpSocket(_remoteIp, HdHomeRunPort))
{
var commandList = commands.GetCommands();
+ var receiveBuffer = new byte[8192];
+
foreach (Tuple<string, string> command in commandList)
{
var channelMsg = CreateSetMessage(_activeTuner, command.Item1, command.Item2, _lockkey.Value);
- await tcpClient.SendAsync(channelMsg, channelMsg.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), cancellationToken).ConfigureAwait(false);
- var response = await tcpClient.ReceiveAsync(cancellationToken).ConfigureAwait(false);
+ await tcpClient.SendToAsync(channelMsg, 0, channelMsg.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), cancellationToken).ConfigureAwait(false);
+ var response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false);
// parse response to make sure it worked
string returnVal;
if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal))
@@ -220,12 +224,15 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
private async Task ReleaseLockkey(ISocket tcpClient)
{
var releaseTarget = CreateSetMessage(_activeTuner, "target", "none", _lockkey);
- await tcpClient.SendAsync(releaseTarget, releaseTarget.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), CancellationToken.None).ConfigureAwait(false);
- await tcpClient.ReceiveAsync(CancellationToken.None).ConfigureAwait(false);
+ await tcpClient.SendToAsync(releaseTarget, 0, releaseTarget.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), CancellationToken.None).ConfigureAwait(false);
+
+ var receiveBuffer = new byte[8192];
+
+ await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, CancellationToken.None).ConfigureAwait(false);
var releaseKeyMsg = CreateSetMessage(_activeTuner, "lockkey", "none", _lockkey);
_lockkey = null;
- await tcpClient.SendAsync(releaseKeyMsg, releaseKeyMsg.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), CancellationToken.None).ConfigureAwait(false);
- await tcpClient.ReceiveAsync(CancellationToken.None).ConfigureAwait(false);
+ await tcpClient.SendToAsync(releaseKeyMsg, 0, releaseKeyMsg.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), CancellationToken.None).ConfigureAwait(false);
+ await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, CancellationToken.None).ConfigureAwait(false);
}
private static byte[] CreateGetMessage(int tuner, string name)
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs
index 7c767c141..97753b3d3 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs
@@ -173,11 +173,13 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
private static int RtpHeaderBytes = 12;
private async Task CopyTo(ISocket udpClient, Stream outputStream, TaskCompletionSource<bool> openTaskCompletionSource, CancellationToken cancellationToken)
{
+ var receiveBuffer = new byte[8192];
+
while (true)
{
- var data = await udpClient.ReceiveAsync(cancellationToken).ConfigureAwait(false);
+ var data = await udpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false);
var bytesRead = data.ReceivedBytes - RtpHeaderBytes;
-
+
await outputStream.WriteAsync(data.Buffer, RtpHeaderBytes, bytesRead, cancellationToken).ConfigureAwait(false);
if (openTaskCompletionSource != null)
@@ -188,128 +190,4 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
}
}
}
-
- // This handles the ReadAsync function only of a Stream object
- // This is used to wrap a UDP socket into a stream for MulticastStream which only uses ReadAsync
- public class UdpClientStream : Stream
- {
- private static int RtpHeaderBytes = 12;
- private static int PacketSize = 1316;
- private readonly ISocket _udpClient;
- bool disposed;
-
- public UdpClientStream(ISocket udpClient) : base()
- {
- _udpClient = udpClient;
- }
-
- public override async Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
- {
- if (buffer == null)
- throw new ArgumentNullException("buffer");
-
- if (offset + count < 0)
- throw new ArgumentOutOfRangeException("offset + count must not be negative", "offset+count");
-
- if (offset + count > buffer.Length)
- throw new ArgumentException("offset + count must not be greater than the length of buffer", "offset+count");
-
- if (disposed)
- throw new ObjectDisposedException(typeof(UdpClientStream).ToString());
-
- // This will always receive a 1328 packet size (PacketSize + RtpHeaderSize)
- // The RTP header will be stripped so see how many reads we need to make to fill the buffer.
- var numReads = count / PacketSize;
-
- int totalBytesRead = 0;
-
- for (int i = 0; i < numReads; ++i)
- {
- var data = await _udpClient.ReceiveAsync(cancellationToken).ConfigureAwait(false);
-
- var bytesRead = data.ReceivedBytes - RtpHeaderBytes;
-
- // remove rtp header
- Buffer.BlockCopy(data.Buffer, RtpHeaderBytes, buffer, offset, bytesRead);
- offset += bytesRead;
- totalBytesRead += bytesRead;
- }
- return totalBytesRead;
- }
-
- protected override void Dispose(bool disposing)
- {
- disposed = true;
- }
-
- public override bool CanRead
- {
- get
- {
- return true;
- }
- }
-
- public override bool CanSeek
- {
- get
- {
- return false;
- }
- }
-
- public override bool CanWrite
- {
- get
- {
- return false;
- }
- }
-
- public override long Length
- {
- get
- {
- throw new NotImplementedException();
- }
- }
-
- public override long Position
- {
- get
- {
- throw new NotImplementedException();
- }
-
- set
- {
- throw new NotImplementedException();
- }
- }
-
- public override void Flush()
- {
- throw new NotImplementedException();
- }
-
- public override int Read(byte[] buffer, int offset, int count)
- {
- throw new NotImplementedException();
- }
-
- public override long Seek(long offset, SeekOrigin origin)
- {
- throw new NotImplementedException();
- }
-
- public override void SetLength(long value)
- {
- throw new NotImplementedException();
- }
-
- public override void Write(byte[] buffer, int offset, int count)
- {
- throw new NotImplementedException();
- }
- }
} \ No newline at end of file
diff --git a/Emby.Server.Implementations/Session/SessionManager.cs b/Emby.Server.Implementations/Session/SessionManager.cs
index 7031ad770..6b3d2dc52 100644
--- a/Emby.Server.Implementations/Session/SessionManager.cs
+++ b/Emby.Server.Implementations/Session/SessionManager.cs
@@ -30,6 +30,7 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller.Net;
+using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Threading;
namespace Emby.Server.Implementations.Session
@@ -1071,7 +1072,11 @@ namespace Emby.Server.Implementations.Session
Recursive = true,
DtoOptions = new DtoOptions(false)
{
- EnableImages = false
+ EnableImages = false,
+ Fields = new List<ItemFields>
+ {
+ ItemFields.SortName
+ }
}
});
@@ -1090,7 +1095,11 @@ namespace Emby.Server.Implementations.Session
IsFolder = false,
DtoOptions = new DtoOptions(false)
{
- EnableImages = false
+ EnableImages = false,
+ Fields = new List<ItemFields>
+ {
+ ItemFields.SortName
+ }
}
}).ConfigureAwait(false);
diff --git a/Emby.Server.Implementations/TV/TVSeriesManager.cs b/Emby.Server.Implementations/TV/TVSeriesManager.cs
index 255c93b5f..876c5d58b 100644
--- a/Emby.Server.Implementations/TV/TVSeriesManager.cs
+++ b/Emby.Server.Implementations/TV/TVSeriesManager.cs
@@ -69,7 +69,7 @@ namespace Emby.Server.Implementations.TV
{
Fields = new List<ItemFields>
{
-
+ ItemFields.PresentationUniqueKey
}
}
@@ -119,7 +119,7 @@ namespace Emby.Server.Implementations.TV
{
Fields = new List<ItemFields>
{
-
+ ItemFields.PresentationUniqueKey
},
EnableImages = false
}
@@ -178,12 +178,10 @@ namespace Emby.Server.Implementations.TV
/// <returns>Task{Episode}.</returns>
private Tuple<DateTime, Func<Episode>> GetNextUp(string seriesKey, User user, DtoOptions dtoOptions)
{
- var enableSeriesPresentationKey = _config.Configuration.EnableSeriesPresentationUniqueKey;
-
var lastWatchedEpisode = _libraryManager.GetItemList(new InternalItemsQuery(user)
{
- AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey,
- SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null,
+ AncestorWithPresentationUniqueKey = null,
+ SeriesPresentationUniqueKey = seriesKey,
IncludeItemTypes = new[] { typeof(Episode).Name },
SortBy = new[] { ItemSortBy.SortName },
SortOrder = SortOrder.Descending,
@@ -194,7 +192,7 @@ namespace Emby.Server.Implementations.TV
{
Fields = new List<ItemFields>
{
-
+ ItemFields.SortName
},
EnableImages = false
}
@@ -205,8 +203,8 @@ namespace Emby.Server.Implementations.TV
{
return _libraryManager.GetItemList(new InternalItemsQuery(user)
{
- AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey,
- SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null,
+ AncestorWithPresentationUniqueKey = null,
+ SeriesPresentationUniqueKey = seriesKey,
IncludeItemTypes = new[] { typeof(Episode).Name },
SortBy = new[] { ItemSortBy.SortName },
SortOrder = SortOrder.Ascending,
diff --git a/Emby.Server.Implementations/Udp/UdpServer.cs b/Emby.Server.Implementations/Udp/UdpServer.cs
index 21ef3cab6..8dc1fae4b 100644
--- a/Emby.Server.Implementations/Udp/UdpServer.cs
+++ b/Emby.Server.Implementations/Udp/UdpServer.cs
@@ -139,30 +139,58 @@ namespace Emby.Server.Implementations.Udp
{
_udpClient = _socketFactory.CreateUdpSocket(port);
- Task.Run(() => StartListening());
+ Task.Run(() => BeginReceive());
}
- private async void StartListening()
+ private readonly byte[] _receiveBuffer = new byte[8192];
+
+ private void BeginReceive()
{
- while (!_isDisposed)
+ if (_isDisposed)
{
- try
- {
- var result = await _udpClient.ReceiveAsync(CancellationToken.None).ConfigureAwait(false);
+ return;
+ }
- OnMessageReceived(result);
- }
- catch (ObjectDisposedException)
- {
- }
- catch (OperationCanceledException)
- {
- }
- catch (Exception ex)
+ try
+ {
+ var result = _udpClient.BeginReceive(_receiveBuffer, 0, _receiveBuffer.Length, OnReceiveResult);
+
+ if (result.CompletedSynchronously)
{
- _logger.ErrorException("Error receiving udp message", ex);
+ OnReceiveResult(result);
}
}
+ catch (ObjectDisposedException)
+ {
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error receiving udp message", ex);
+ }
+ }
+
+ private void OnReceiveResult(IAsyncResult result)
+ {
+ if (_isDisposed)
+ {
+ return;
+ }
+
+ try
+ {
+ var socketResult = _udpClient.EndReceive(result);
+
+ OnMessageReceived(socketResult);
+ }
+ catch (ObjectDisposedException)
+ {
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error receiving udp message", ex);
+ }
+
+ BeginReceive();
}
/// <summary>
@@ -239,13 +267,13 @@ namespace Emby.Server.Implementations.Udp
try
{
- await _udpClient.SendWithLockAsync(bytes, bytes.Length, remoteEndPoint, CancellationToken.None).ConfigureAwait(false);
+ await _udpClient.SendToAsync(bytes, 0, bytes.Length, remoteEndPoint, CancellationToken.None).ConfigureAwait(false);
_logger.Info("Udp message sent to {0}", remoteEndPoint);
}
catch (OperationCanceledException)
{
-
+
}
catch (Exception ex)
{
diff --git a/MediaBrowser.Api/Reports/ReportsService.cs b/MediaBrowser.Api/Reports/ReportsService.cs
index 9490c301d..6e89b0d39 100644
--- a/MediaBrowser.Api/Reports/ReportsService.cs
+++ b/MediaBrowser.Api/Reports/ReportsService.cs
@@ -225,7 +225,6 @@ namespace MediaBrowser.Api.Reports
ParentId = string.IsNullOrWhiteSpace(request.ParentId) ? (Guid?)null : new Guid(request.ParentId),
ParentIndexNumber = request.ParentIndexNumber,
AiredDuringSeason = request.AiredDuringSeason,
- AlbumArtistStartsWithOrGreater = request.AlbumArtistStartsWithOrGreater,
EnableTotalRecordCount = request.EnableTotalRecordCount
};
diff --git a/MediaBrowser.Api/StartupWizardService.cs b/MediaBrowser.Api/StartupWizardService.cs
index 7e13512aa..cd56b69bd 100644
--- a/MediaBrowser.Api/StartupWizardService.cs
+++ b/MediaBrowser.Api/StartupWizardService.cs
@@ -96,7 +96,6 @@ namespace MediaBrowser.Api
config.EnableCaseSensitiveItemIds = true;
config.SkipDeserializationForBasicTypes = true;
config.SkipDeserializationForAudio = true;
- config.EnableSeriesPresentationUniqueKey = true;
config.EnableLocalizedGuids = true;
config.EnableSimpleArtistDetection = true;
config.EnableNormalizedItemByNameIds = true;
diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
index d79fafd32..24d0a7d52 100644
--- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
+++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
@@ -119,7 +119,6 @@ namespace MediaBrowser.Api.UserLibrary
NameLessThan = request.NameLessThan,
NameStartsWith = request.NameStartsWith,
NameStartsWithOrGreater = request.NameStartsWithOrGreater,
- AlbumArtistStartsWithOrGreater = request.AlbumArtistStartsWithOrGreater,
Tags = request.GetTags(),
OfficialRatings = request.GetOfficialRatings(),
Genres = request.GetGenres(),
diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs b/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs
index 56fd93014..2de86f4da 100644
--- a/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs
+++ b/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs
@@ -354,9 +354,6 @@ namespace MediaBrowser.Api.UserLibrary
[ApiMember(Name = "NameLessThan", Description = "Optional filter by items whose name is equally or lesser than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public string NameLessThan { get; set; }
- [ApiMember(Name = "AlbumArtistStartsWithOrGreater", Description = "Optional filter by items whose album artist is sorted equally or greater than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public string AlbumArtistStartsWithOrGreater { get; set; }
-
public string[] GetGenres()
{
return (Genres ?? string.Empty).Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs
index 159de46e6..d4811e603 100644
--- a/MediaBrowser.Api/UserLibrary/ItemsService.cs
+++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs
@@ -249,7 +249,6 @@ namespace MediaBrowser.Api.UserLibrary
ParentId = string.IsNullOrWhiteSpace(request.ParentId) ? (Guid?)null : new Guid(request.ParentId),
ParentIndexNumber = request.ParentIndexNumber,
AiredDuringSeason = request.AiredDuringSeason,
- AlbumArtistStartsWithOrGreater = request.AlbumArtistStartsWithOrGreater,
EnableTotalRecordCount = request.EnableTotalRecordCount,
ExcludeItemIds = request.GetExcludeItemIds(),
DtoOptions = dtoOptions
diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
index a4e1ec330..90db9348d 100644
--- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
+++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
@@ -362,20 +362,6 @@ namespace MediaBrowser.Api.UserLibrary
var dtos = series
.GetEpisodes(user, dtoOptions)
.Where(i => i.ParentIndexNumber.HasValue && i.ParentIndexNumber.Value == 0)
- .OrderBy(i =>
- {
- if (i.PremiereDate.HasValue)
- {
- return i.PremiereDate.Value;
- }
-
- if (i.ProductionYear.HasValue)
- {
- return new DateTime(i.ProductionYear.Value, 1, 1, 0, 0, 0, DateTimeKind.Utc);
- }
- return DateTime.MinValue;
- })
- .ThenBy(i => i.SortName)
.Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, currentUser));
return dtos.ToList();
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index f83b2f7bd..b602be9ea 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -826,30 +826,6 @@ namespace MediaBrowser.Controller.Entities
}
}
- if (query.SortBy != null && query.SortBy.Length > 0)
- {
- if (query.SortBy.Contains(ItemSortBy.AiredEpisodeOrder, StringComparer.OrdinalIgnoreCase))
- {
- Logger.Debug("Query requires post-filtering due to ItemSortBy.AiredEpisodeOrder");
- return true;
- }
- if (query.SortBy.Contains(ItemSortBy.GameSystem, StringComparer.OrdinalIgnoreCase))
- {
- Logger.Debug("Query requires post-filtering due to ItemSortBy.GameSystem");
- return true;
- }
- if (query.SortBy.Contains(ItemSortBy.Players, StringComparer.OrdinalIgnoreCase))
- {
- Logger.Debug("Query requires post-filtering due to ItemSortBy.Players");
- return true;
- }
- if (query.SortBy.Contains(ItemSortBy.VideoBitRate, StringComparer.OrdinalIgnoreCase))
- {
- Logger.Debug("Query requires post-filtering due to ItemSortBy.VideoBitRate");
- return true;
- }
- }
-
if (query.IsInBoxSet.HasValue)
{
Logger.Debug("Query requires post-filtering due to IsInBoxSet");
@@ -907,18 +883,6 @@ namespace MediaBrowser.Controller.Entities
return true;
}
- if (query.MinPlayers.HasValue)
- {
- Logger.Debug("Query requires post-filtering due to MinPlayers");
- return true;
- }
-
- if (query.MaxPlayers.HasValue)
- {
- Logger.Debug("Query requires post-filtering due to MaxPlayers");
- return true;
- }
-
if (UserViewBuilder.CollapseBoxSetItems(query, this, query.User, ConfigurationManager))
{
Logger.Debug("Query requires post-filtering due to CollapseBoxSetItems");
@@ -949,12 +913,6 @@ namespace MediaBrowser.Controller.Entities
return true;
}
- if (!string.IsNullOrWhiteSpace(query.AlbumArtistStartsWithOrGreater))
- {
- Logger.Debug("Query requires post-filtering due to AlbumArtistStartsWithOrGreater");
- return true;
- }
-
if (query.IsPlayed.HasValue)
{
if (query.IncludeItemTypes.Length == 1 && query.IncludeItemTypes.Contains(typeof(Series).Name))
diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs
index 2186716d7..743e7642e 100644
--- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs
+++ b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs
@@ -154,7 +154,6 @@ namespace MediaBrowser.Controller.Entities
public DayOfWeek[] AirDays { get; set; }
public SeriesStatus[] SeriesStatuses { get; set; }
- public string AlbumArtistStartsWithOrGreater { get; set; }
public string ExternalSeriesId { get; set; }
public string ExternalId { get; set; }
diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs
index f75a78c97..45dbed216 100644
--- a/MediaBrowser.Controller/Entities/TV/Series.cs
+++ b/MediaBrowser.Controller/Entities/TV/Series.cs
@@ -142,13 +142,12 @@ namespace MediaBrowser.Controller.Entities.TV
public override int GetChildCount(User user)
{
- var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey;
var seriesKey = GetUniqueSeriesKey(this);
var result = LibraryManager.GetCount(new InternalItemsQuery(user)
{
- AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey,
- SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null,
+ AncestorWithPresentationUniqueKey = null,
+ SeriesPresentationUniqueKey = seriesKey,
IncludeItemTypes = new[] { typeof(Season).Name },
IsVirtualItem = false,
Limit = 0,
@@ -167,13 +166,12 @@ namespace MediaBrowser.Controller.Entities.TV
public override int GetRecursiveChildCount(User user)
{
- var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey;
var seriesKey = GetUniqueSeriesKey(this);
var query = new InternalItemsQuery(user)
{
- AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey,
- SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null,
+ AncestorWithPresentationUniqueKey = null,
+ SeriesPresentationUniqueKey = seriesKey,
DtoOptions = new Dto.DtoOptions
{
Fields = new List<ItemFields>
@@ -270,11 +268,10 @@ namespace MediaBrowser.Controller.Entities.TV
{
var config = user.Configuration;
- var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey;
var seriesKey = GetUniqueSeriesKey(this);
- query.AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey;
- query.SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null;
+ query.AncestorWithPresentationUniqueKey = null;
+ query.SeriesPresentationUniqueKey = seriesKey;
query.IncludeItemTypes = new[] { typeof(Season).Name };
query.SortBy = new[] {ItemSortBy.SortName};
@@ -303,11 +300,10 @@ namespace MediaBrowser.Controller.Entities.TV
if (query.Recursive)
{
- var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey;
var seriesKey = GetUniqueSeriesKey(this);
- query.AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey;
- query.SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null;
+ query.AncestorWithPresentationUniqueKey = null;
+ query.SeriesPresentationUniqueKey = seriesKey;
if (query.SortBy.Length == 0)
{
query.SortBy = new[] { ItemSortBy.SortName };
@@ -327,13 +323,12 @@ namespace MediaBrowser.Controller.Entities.TV
public IEnumerable<Episode> GetEpisodes(User user, DtoOptions options)
{
- var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey;
var seriesKey = GetUniqueSeriesKey(this);
var query = new InternalItemsQuery(user)
{
- AncestorWithPresentationUniqueKey = enableSeriesPresentationKey ? null : seriesKey,
- SeriesPresentationUniqueKey = enableSeriesPresentationKey ? seriesKey : null,
+ AncestorWithPresentationUniqueKey = null,
+ SeriesPresentationUniqueKey = seriesKey,
IncludeItemTypes = new[] { typeof(Episode).Name, typeof(Season).Name },
SortBy = new[] { ItemSortBy.SortName },
DtoOptions = options
@@ -436,8 +431,6 @@ namespace MediaBrowser.Controller.Entities.TV
public IEnumerable<Episode> GetSeasonEpisodes(Season parentSeason, User user, DtoOptions options)
{
- var enableSeriesPresentationKey = ConfigurationManager.Configuration.EnableSeriesPresentationUniqueKey;
-
var queryFromSeries = ConfigurationManager.Configuration.DisplaySpecialsWithinSeasons;
// add optimization when this setting is not enabled
@@ -447,8 +440,8 @@ namespace MediaBrowser.Controller.Entities.TV
var query = new InternalItemsQuery(user)
{
- AncestorWithPresentationUniqueKey = queryFromSeries && enableSeriesPresentationKey ? null : seriesKey,
- SeriesPresentationUniqueKey = queryFromSeries && enableSeriesPresentationKey ? seriesKey : null,
+ AncestorWithPresentationUniqueKey = queryFromSeries ? null : seriesKey,
+ SeriesPresentationUniqueKey = queryFromSeries ? seriesKey : null,
IncludeItemTypes = new[] { typeof(Episode).Name },
SortBy = new[] { ItemSortBy.SortName },
DtoOptions = options
diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
index b2edb3da8..b5ece06a6 100644
--- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs
+++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
@@ -1714,17 +1714,6 @@ namespace MediaBrowser.Controller.Entities
}
}
- if (!string.IsNullOrEmpty(query.AlbumArtistStartsWithOrGreater))
- {
- var ok = new[] { item }.OfType<IHasAlbumArtist>()
- .Any(p => string.Compare(query.AlbumArtistStartsWithOrGreater, p.AlbumArtists.FirstOrDefault(), StringComparison.CurrentCultureIgnoreCase) < 1);
-
- if (!ok)
- {
- return false;
- }
- }
-
return true;
}
diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs
index 90aa3690a..a02b6957f 100644
--- a/MediaBrowser.Controller/Entities/Video.cs
+++ b/MediaBrowser.Controller/Entities/Video.cs
@@ -282,12 +282,10 @@ namespace MediaBrowser.Controller.Entities
public IEnumerable<Video> GetLinkedAlternateVersions()
{
- var linkedVersions = LinkedAlternateVersions
+ return LinkedAlternateVersions
.Select(GetLinkedChild)
.Where(i => i != null)
- .OfType<Video>();
-
- return linkedVersions
+ .OfType<Video>()
.OrderBy(i => i.SortName);
}
@@ -630,21 +628,24 @@ namespace MediaBrowser.Controller.Entities
{
info.Path = media.ShortcutPath;
- if (info.Path.StartsWith("Http", StringComparison.OrdinalIgnoreCase))
- {
- info.Protocol = MediaProtocol.Http;
- }
- else if (info.Path.StartsWith("Rtmp", StringComparison.OrdinalIgnoreCase))
- {
- info.Protocol = MediaProtocol.Rtmp;
- }
- else if (info.Path.StartsWith("Rtsp", StringComparison.OrdinalIgnoreCase))
- {
- info.Protocol = MediaProtocol.Rtsp;
- }
- else
+ if (!string.IsNullOrWhiteSpace(info.Path))
{
- info.Protocol = MediaProtocol.File;
+ if (info.Path.StartsWith("Http", StringComparison.OrdinalIgnoreCase))
+ {
+ info.Protocol = MediaProtocol.Http;
+ }
+ else if (info.Path.StartsWith("Rtmp", StringComparison.OrdinalIgnoreCase))
+ {
+ info.Protocol = MediaProtocol.Rtmp;
+ }
+ else if (info.Path.StartsWith("Rtsp", StringComparison.OrdinalIgnoreCase))
+ {
+ info.Protocol = MediaProtocol.Rtsp;
+ }
+ else
+ {
+ info.Protocol = MediaProtocol.File;
+ }
}
}
diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs
index 67ba633b7..54a361ff7 100644
--- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs
+++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs
@@ -994,6 +994,10 @@ namespace MediaBrowser.Controller.MediaEncoding
{
sourceBitrate *= 2;
}
+ else if (sourceBitrate <= 3000000)
+ {
+ sourceBitrate = Convert.ToInt32(sourceBitrate * 1.5);
+ }
var bitrate = Math.Min(sourceBitrate, requestedBitrate);
diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
index 60bbf6240..a4a921821 100644
--- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs
+++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
@@ -46,7 +46,6 @@ namespace MediaBrowser.Model.Configuration
/// </summary>
/// <value><c>true</c> if [use HTTPS]; otherwise, <c>false</c>.</value>
public bool EnableHttps { get; set; }
- public bool EnableSeriesPresentationUniqueKey { get; set; }
public bool EnableLocalizedGuids { get; set; }
public bool EnableNormalizedItemByNameIds { get; set; }
diff --git a/MediaBrowser.Model/Net/ISocket.cs b/MediaBrowser.Model/Net/ISocket.cs
index 61fc0e28b..1cf6c7cc7 100644
--- a/MediaBrowser.Model/Net/ISocket.cs
+++ b/MediaBrowser.Model/Net/ISocket.cs
@@ -19,11 +19,17 @@ namespace MediaBrowser.Model.Net
/// </summary>
/// <returns></returns>
Task<SocketReceiveResult> ReceiveAsync(CancellationToken cancellationToken);
+ Task<SocketReceiveResult> ReceiveAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken);
+
+ IAsyncResult BeginReceive(byte[] buffer, int offset, int count, AsyncCallback callback);
+ SocketReceiveResult EndReceive(IAsyncResult result);
/// <summary>
/// Sends a UDP message to a particular end point (uni or multicast).
/// </summary>
- Task SendAsync(byte[] buffer, int bytes, IpEndPointInfo endPoint, CancellationToken cancellationToken);
- Task SendWithLockAsync(byte[] buffer, int bytes, IpEndPointInfo endPoint, CancellationToken cancellationToken);
+ Task SendToAsync(byte[] buffer, int offset, int bytes, IpEndPointInfo endPoint, CancellationToken cancellationToken);
+
+ IAsyncResult BeginSendTo(byte[] buffer, int offset, int size, IpEndPointInfo endPoint, AsyncCallback callback, object state);
+ int EndSendTo(IAsyncResult result);
}
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj
index 15c7761e2..207597a00 100644
--- a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj
+++ b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj
@@ -10,7 +10,7 @@
<RootNamespace>MediaBrowser.Server.Mono</RootNamespace>
<AssemblyName>MediaBrowser.Server.Mono</AssemblyName>
<StartupObject>MediaBrowser.Server.Mono.MainClass</StartupObject>
- <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
+ <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
<TargetFrameworkProfile />
</PropertyGroup>
@@ -36,18 +36,12 @@
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
- <Reference Include="Emby.Common.Implementations">
- <HintPath>..\ThirdParty\emby\Emby.Common.Implementations.dll</HintPath>
- </Reference>
<Reference Include="Emby.Server.CinemaMode">
<HintPath>..\ThirdParty\emby\Emby.Server.CinemaMode.dll</HintPath>
</Reference>
<Reference Include="Emby.Server.Connect">
<HintPath>..\ThirdParty\emby\Emby.Server.Connect.dll</HintPath>
</Reference>
- <Reference Include="Emby.Server.Core">
- <HintPath>..\ThirdParty\emby\Emby.Server.Core.dll</HintPath>
- </Reference>
<Reference Include="Emby.Server.Sync">
<HintPath>..\ThirdParty\emby\Emby.Server.Sync.dll</HintPath>
</Reference>
@@ -59,16 +53,16 @@
<HintPath>..\packages\NLog.4.4.3\lib\net45\NLog.dll</HintPath>
<Private>True</Private>
</Reference>
- <Reference Include="ServiceStack.Text, Version=4.5.4.0, Culture=neutral, processorArchitecture=MSIL">
- <HintPath>..\packages\ServiceStack.Text.4.5.4\lib\net45\ServiceStack.Text.dll</HintPath>
+ <Reference Include="ServiceStack.Text, Version=4.5.8.0, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\packages\ServiceStack.Text.4.5.8\lib\net45\ServiceStack.Text.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="SharpCompress, Version=0.14.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\SharpCompress.0.14.0\lib\net45\SharpCompress.dll</HintPath>
<Private>True</Private>
</Reference>
- <Reference Include="SimpleInjector, Version=3.3.2.0, Culture=neutral, PublicKeyToken=984cb50dea722e99, processorArchitecture=MSIL">
- <HintPath>..\packages\SimpleInjector.3.3.2\lib\net45\SimpleInjector.dll</HintPath>
+ <Reference Include="SimpleInjector, Version=4.0.7.0, Culture=neutral, PublicKeyToken=984cb50dea722e99, processorArchitecture=MSIL">
+ <HintPath>..\packages\SimpleInjector.4.0.7\lib\net45\SimpleInjector.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="SQLitePCLRaw.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1488e028ca7ab535, processorArchitecture=MSIL">
@@ -110,6 +104,10 @@
<Project>{713f42b5-878e-499d-a878-e4c652b1d5e8}</Project>
<Name>DvdLib</Name>
</ProjectReference>
+ <ProjectReference Include="..\Emby.Common.Implementations\Emby.Common.Implementations.csproj">
+ <Project>{1e37a338-9f57-4b70-bd6d-bb9c591e319b}</Project>
+ <Name>Emby.Common.Implementations</Name>
+ </ProjectReference>
<ProjectReference Include="..\Emby.Dlna\Emby.Dlna.csproj">
<Project>{805844ab-e92f-45e6-9d99-4f6d48d129a5}</Project>
<Name>Emby.Dlna</Name>
@@ -126,14 +124,14 @@
<Project>{89ab4548-770d-41fd-a891-8daff44f452c}</Project>
<Name>Emby.Photos</Name>
</ProjectReference>
+ <ProjectReference Include="..\Emby.Server.Core\Emby.Server.Core.csproj">
+ <Project>{776b9f0c-5195-45e3-9a36-1cc1f0d8e0b0}</Project>
+ <Name>Emby.Server.Core</Name>
+ </ProjectReference>
<ProjectReference Include="..\Emby.Server.Implementations\Emby.Server.Implementations.csproj">
<Project>{e383961b-9356-4d5d-8233-9a1079d03055}</Project>
<Name>Emby.Server.Implementations</Name>
</ProjectReference>
- <ProjectReference Include="..\MediaBrowser.Server.Startup.Common\MediaBrowser.Server.Startup.Common.csproj">
- <Project>{b90ab8f2-1bff-4568-a3fd-2a338a435a75}</Project>
- <Name>MediaBrowser.Server.Startup.Common</Name>
- </ProjectReference>
<ProjectReference Include="..\MediaBrowser.WebDashboard\MediaBrowser.WebDashboard.csproj">
<Project>{5624B7B5-B5A7-41D8-9F10-CC5611109619}</Project>
<Name>MediaBrowser.WebDashboard</Name>
@@ -174,6 +172,10 @@
<Project>{23499896-B135-4527-8574-C26E926EA99E}</Project>
<Name>MediaBrowser.XbmcMetadata</Name>
</ProjectReference>
+ <ProjectReference Include="..\Mono.Nat\Mono.Nat.csproj">
+ <Project>{cb7f2326-6497-4a3d-ba03-48513b17a7be}</Project>
+ <Name>Mono.Nat</Name>
+ </ProjectReference>
<ProjectReference Include="..\OpenSubtitlesHandler\OpenSubtitlesHandler.csproj">
<Project>{4a4402d4-e910-443b-b8fc-2c18286a2ca0}</Project>
<Name>OpenSubtitlesHandler</Name>
@@ -182,10 +184,6 @@
<Project>{21002819-c39a-4d3e-be83-2a276a77fb1f}</Project>
<Name>RSSDP</Name>
</ProjectReference>
- <ProjectReference Include="..\SocketHttpListener.Portable\SocketHttpListener.Portable.csproj">
- <Project>{4f26d5d8-a7b0-42b3-ba42-7cb7d245934e}</Project>
- <Name>SocketHttpListener.Portable</Name>
- </ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="..\ThirdParty\SQLite3\osx\libsqlite3.0.dylib">
diff --git a/MediaBrowser.Server.Mono/Program.cs b/MediaBrowser.Server.Mono/Program.cs
index b79c8c1f7..a9aed0fce 100644
--- a/MediaBrowser.Server.Mono/Program.cs
+++ b/MediaBrowser.Server.Mono/Program.cs
@@ -14,15 +14,15 @@ using System.Threading.Tasks;
using Emby.Common.Implementations.EnvironmentInfo;
using Emby.Common.Implementations.Logging;
using Emby.Common.Implementations.Networking;
-using Emby.Common.Implementations.Security;
+using Emby.Server.Core.Cryptography;
using Emby.Server.Core;
+using Emby.Server.Core.IO;
using Emby.Server.Core.Logging;
using Emby.Server.Implementations;
using Emby.Server.Implementations.IO;
using Emby.Server.Implementations.Logging;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.System;
-using MediaBrowser.Server.Startup.Common.IO;
using Mono.Unix.Native;
using NLog;
using ILogger = MediaBrowser.Model.Logging.ILogger;
diff --git a/MediaBrowser.Server.Mono/app.config b/MediaBrowser.Server.Mono/app.config
index 8f21d4a67..15896b606 100644
--- a/MediaBrowser.Server.Mono/app.config
+++ b/MediaBrowser.Server.Mono/app.config
@@ -1,31 +1,31 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
- <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />
+ <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
</configSections>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets async="true"></targets>
</nlog>
<appSettings>
- <add key="DebugProgramDataPath" value="ProgramData-Server" />
- <add key="ReleaseProgramDataPath" value="ProgramData-Server" />
+ <add key="DebugProgramDataPath" value="ProgramData-Server"/>
+ <add key="ReleaseProgramDataPath" value="ProgramData-Server"/>
</appSettings>
<runtime>
- <legacyUnhandledExceptionPolicy enabled="1" />
+ <legacyUnhandledExceptionPolicy enabled="1"/>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
- <assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" />
- <bindingRedirect oldVersion="0.0.0.0-1.0.94.0" newVersion="1.0.94.0" />
+ <assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral"/>
+ <bindingRedirect oldVersion="0.0.0.0-1.0.94.0" newVersion="1.0.94.0"/>
</dependentAssembly>
<dependentAssembly>
- <assemblyIdentity name="System.IO.FileSystem.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
- <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
+ <assemblyIdentity name="System.IO.FileSystem.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
+ <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0"/>
</dependentAssembly>
<dependentAssembly>
- <assemblyIdentity name="SimpleInjector" publicKeyToken="984cb50dea722e99" culture="neutral" />
- <bindingRedirect oldVersion="0.0.0.0-3.3.2.0" newVersion="3.3.2.0" />
+ <assemblyIdentity name="SimpleInjector" publicKeyToken="984cb50dea722e99" culture="neutral"/>
+ <bindingRedirect oldVersion="0.0.0.0-4.0.7.0" newVersion="4.0.7.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
-<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" /></startup></configuration>
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/></startup></configuration>
diff --git a/MediaBrowser.Server.Mono/packages.config b/MediaBrowser.Server.Mono/packages.config
index de26c7666..bd8ff4476 100644
--- a/MediaBrowser.Server.Mono/packages.config
+++ b/MediaBrowser.Server.Mono/packages.config
@@ -2,9 +2,9 @@
<packages>
<package id="Mono.Posix" version="4.0.0.0" targetFramework="net45" />
<package id="NLog" version="4.4.3" targetFramework="net46" />
- <package id="ServiceStack.Text" version="4.5.4" targetFramework="net46" />
+ <package id="ServiceStack.Text" version="4.5.8" targetFramework="net46" />
<package id="SharpCompress" version="0.14.0" targetFramework="net46" />
- <package id="SimpleInjector" version="3.3.2" targetFramework="net46" />
+ <package id="SimpleInjector" version="4.0.7" targetFramework="net46" />
<package id="SQLitePCLRaw.core" version="1.1.5" targetFramework="net46" />
<package id="SQLitePCLRaw.provider.sqlite3.net45" version="1.1.5" targetFramework="net46" />
</packages> \ No newline at end of file
diff --git a/MediaBrowser.Server.Startup.Common/packages.config b/MediaBrowser.Server.Startup.Common/packages.config
deleted file mode 100644
index 4b6266585..000000000
--- a/MediaBrowser.Server.Startup.Common/packages.config
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
- <package id="Microsoft.IO.RecyclableMemoryStream" version="1.2.2" targetFramework="net46" />
-</packages> \ No newline at end of file
diff --git a/MediaBrowser.ServerApplication/App.config b/MediaBrowser.ServerApplication/App.config
index fae013d6e..d7f4380c4 100644
--- a/MediaBrowser.ServerApplication/App.config
+++ b/MediaBrowser.ServerApplication/App.config
@@ -49,7 +49,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="SimpleInjector" publicKeyToken="984cb50dea722e99" culture="neutral" />
- <bindingRedirect oldVersion="0.0.0.0-3.3.2.0" newVersion="3.3.2.0" />
+ <bindingRedirect oldVersion="0.0.0.0-4.0.7.0" newVersion="4.0.7.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.FileSystem.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs
index 37c71545a..a0494b3e5 100644
--- a/MediaBrowser.ServerApplication/MainStartup.cs
+++ b/MediaBrowser.ServerApplication/MainStartup.cs
@@ -21,9 +21,10 @@ using Emby.Common.Implementations.EnvironmentInfo;
using Emby.Common.Implementations.IO;
using Emby.Common.Implementations.Logging;
using Emby.Common.Implementations.Networking;
-using Emby.Common.Implementations.Security;
+using Emby.Server.Core.Cryptography;
using Emby.Drawing;
using Emby.Server.Core;
+using Emby.Server.Core.IO;
using Emby.Server.Core.Logging;
using Emby.Server.Implementations;
using Emby.Server.Implementations.Browser;
@@ -32,7 +33,6 @@ using Emby.Server.Implementations.Logging;
using ImageMagickSharp;
using MediaBrowser.Common.Net;
using MediaBrowser.Model.IO;
-using MediaBrowser.Server.Startup.Common.IO;
namespace MediaBrowser.ServerApplication
{
diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
index eb8cd9bcb..e4a526613 100644
--- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
+++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
@@ -64,18 +64,12 @@
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
- <Reference Include="Emby.Common.Implementations">
- <HintPath>..\ThirdParty\emby\Emby.Common.Implementations.dll</HintPath>
- </Reference>
<Reference Include="Emby.Server.CinemaMode">
<HintPath>..\ThirdParty\emby\Emby.Server.CinemaMode.dll</HintPath>
</Reference>
<Reference Include="Emby.Server.Connect">
<HintPath>..\ThirdParty\emby\Emby.Server.Connect.dll</HintPath>
</Reference>
- <Reference Include="Emby.Server.Core">
- <HintPath>..\ThirdParty\emby\Emby.Server.Core.dll</HintPath>
- </Reference>
<Reference Include="Emby.Server.Sync">
<HintPath>..\ThirdParty\emby\Emby.Server.Sync.dll</HintPath>
</Reference>
@@ -87,16 +81,16 @@
<HintPath>..\packages\NLog.4.4.3\lib\net45\NLog.dll</HintPath>
<Private>True</Private>
</Reference>
- <Reference Include="ServiceStack.Text, Version=4.5.4.0, Culture=neutral, processorArchitecture=MSIL">
- <HintPath>..\packages\ServiceStack.Text.4.5.4\lib\net45\ServiceStack.Text.dll</HintPath>
+ <Reference Include="ServiceStack.Text, Version=4.5.8.0, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\packages\ServiceStack.Text.4.5.8\lib\net45\ServiceStack.Text.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="SharpCompress, Version=0.14.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\SharpCompress.0.14.0\lib\net45\SharpCompress.dll</HintPath>
<Private>True</Private>
</Reference>
- <Reference Include="SimpleInjector, Version=3.3.2.0, Culture=neutral, PublicKeyToken=984cb50dea722e99, processorArchitecture=MSIL">
- <HintPath>..\packages\SimpleInjector.3.3.2\lib\net45\SimpleInjector.dll</HintPath>
+ <Reference Include="SimpleInjector, Version=4.0.7.0, Culture=neutral, PublicKeyToken=984cb50dea722e99, processorArchitecture=MSIL">
+ <HintPath>..\packages\SimpleInjector.4.0.7\lib\net45\SimpleInjector.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="SkiaSharp, Version=1.57.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
@@ -1098,6 +1092,10 @@
<Project>{713f42b5-878e-499d-a878-e4c652b1d5e8}</Project>
<Name>DvdLib</Name>
</ProjectReference>
+ <ProjectReference Include="..\Emby.Common.Implementations\Emby.Common.Implementations.csproj">
+ <Project>{1e37a338-9f57-4b70-bd6d-bb9c591e319b}</Project>
+ <Name>Emby.Common.Implementations</Name>
+ </ProjectReference>
<ProjectReference Include="..\Emby.Dlna\Emby.Dlna.csproj">
<Project>{805844ab-e92f-45e6-9d99-4f6d48d129a5}</Project>
<Name>Emby.Dlna</Name>
@@ -1118,6 +1116,10 @@
<Project>{89ab4548-770d-41fd-a891-8daff44f452c}</Project>
<Name>Emby.Photos</Name>
</ProjectReference>
+ <ProjectReference Include="..\Emby.Server.Core\Emby.Server.Core.csproj">
+ <Project>{776b9f0c-5195-45e3-9a36-1cc1f0d8e0b0}</Project>
+ <Name>Emby.Server.Core</Name>
+ </ProjectReference>
<ProjectReference Include="..\Emby.Server.Implementations\Emby.Server.Implementations.csproj">
<Project>{e383961b-9356-4d5d-8233-9a1079d03055}</Project>
<Name>Emby.Server.Implementations</Name>
@@ -1154,10 +1156,6 @@
<Project>{2e781478-814d-4a48-9d80-bff206441a65}</Project>
<Name>MediaBrowser.Server.Implementations</Name>
</ProjectReference>
- <ProjectReference Include="..\MediaBrowser.Server.Startup.Common\MediaBrowser.Server.Startup.Common.csproj">
- <Project>{b90ab8f2-1bff-4568-a3fd-2a338a435a75}</Project>
- <Name>MediaBrowser.Server.Startup.Common</Name>
- </ProjectReference>
<ProjectReference Include="..\MediaBrowser.WebDashboard\MediaBrowser.WebDashboard.csproj">
<Project>{5624b7b5-b5a7-41d8-9f10-cc5611109619}</Project>
<Name>MediaBrowser.WebDashboard</Name>
@@ -1166,6 +1164,10 @@
<Project>{23499896-b135-4527-8574-c26e926ea99e}</Project>
<Name>MediaBrowser.XbmcMetadata</Name>
</ProjectReference>
+ <ProjectReference Include="..\Mono.Nat\Mono.Nat.csproj">
+ <Project>{cb7f2326-6497-4a3d-ba03-48513b17a7be}</Project>
+ <Name>Mono.Nat</Name>
+ </ProjectReference>
<ProjectReference Include="..\OpenSubtitlesHandler\OpenSubtitlesHandler.csproj">
<Project>{4a4402d4-e910-443b-b8fc-2c18286a2ca0}</Project>
<Name>OpenSubtitlesHandler</Name>
@@ -1174,10 +1176,6 @@
<Project>{21002819-c39a-4d3e-be83-2a276a77fb1f}</Project>
<Name>RSSDP</Name>
</ProjectReference>
- <ProjectReference Include="..\SocketHttpListener.Portable\SocketHttpListener.Portable.csproj">
- <Project>{4f26d5d8-a7b0-42b3-ba42-7cb7d245934e}</Project>
- <Name>SocketHttpListener.Portable</Name>
- </ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
diff --git a/MediaBrowser.ServerApplication/packages.config b/MediaBrowser.ServerApplication/packages.config
index 2d4ba6170..2a0cbd150 100644
--- a/MediaBrowser.ServerApplication/packages.config
+++ b/MediaBrowser.ServerApplication/packages.config
@@ -2,9 +2,9 @@
<packages>
<package id="ImageMagickSharp" version="1.0.0.18" targetFramework="net45" />
<package id="NLog" version="4.4.3" targetFramework="net462" />
- <package id="ServiceStack.Text" version="4.5.4" targetFramework="net462" />
+ <package id="ServiceStack.Text" version="4.5.8" targetFramework="net462" />
<package id="SharpCompress" version="0.14.0" targetFramework="net462" />
- <package id="SimpleInjector" version="3.3.2" targetFramework="net462" />
+ <package id="SimpleInjector" version="4.0.7" targetFramework="net462" />
<package id="SkiaSharp" version="1.57.1" targetFramework="net462" />
<package id="SQLitePCLRaw.core" version="1.1.5" targetFramework="net462" />
<package id="SQLitePCLRaw.provider.sqlite3.net45" version="1.1.5" targetFramework="net462" />
diff --git a/MediaBrowser.Tests/MediaBrowser.Tests.csproj b/MediaBrowser.Tests/MediaBrowser.Tests.csproj
index 8ba828d85..732fae370 100644
--- a/MediaBrowser.Tests/MediaBrowser.Tests.csproj
+++ b/MediaBrowser.Tests/MediaBrowser.Tests.csproj
@@ -8,7 +8,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>MediaBrowser.Tests</RootNamespace>
<AssemblyName>MediaBrowser.Tests</AssemblyName>
- <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
+ <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
diff --git a/MediaBrowser.Tests/app.config b/MediaBrowser.Tests/app.config
index 9d8c1ac93..5c79b167f 100644
--- a/MediaBrowser.Tests/app.config
+++ b/MediaBrowser.Tests/app.config
@@ -8,4 +8,4 @@
</dependentAssembly>
</assemblyBinding>
</runtime>
-<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/></startup></configuration>
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/></startup></configuration>
diff --git a/MediaBrowser.sln b/MediaBrowser.sln
index 525fa5807..1a4638265 100644
--- a/MediaBrowser.sln
+++ b/MediaBrowser.sln
@@ -52,34 +52,32 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.LocalMetadata"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Server.Mono", "MediaBrowser.Server.Mono\MediaBrowser.Server.Mono.csproj", "{175A9388-F352-4586-A6B4-070DED62B644}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Server.Startup.Common", "MediaBrowser.Server.Startup.Common\MediaBrowser.Server.Startup.Common.csproj", "{B90AB8F2-1BFF-4568-A3FD-2A338A435A75}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Drawing", "Emby.Drawing\Emby.Drawing.csproj", "{08FFF49B-F175-4807-A2B5-73B0EBD9F716}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Photos", "Emby.Photos\Emby.Photos.csproj", "{89AB4548-770D-41FD-A891-8DAFF44F452C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DvdLib", "DvdLib\DvdLib.csproj", "{713F42B5-878E-499D-A878-E4C652B1D5E8}"
EndProject
-Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Emby.Common.Implementations", "Emby.Common.Implementations\Emby.Common.Implementations.xproj", "{5A27010A-09C6-4E86-93EA-437484C10917}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BDInfo", "BDInfo\BDInfo.csproj", "{88AE38DF-19D7-406F-A6A9-09527719A21E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Server.Implementations", "Emby.Server.Implementations\Emby.Server.Implementations.csproj", "{E383961B-9356-4D5D-8233-9A1079D03055}"
EndProject
-Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Mono.Nat", "Mono.Nat\Mono.Nat.xproj", "{4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RSSDP", "RSSDP\RSSDP.csproj", "{21002819-C39A-4D3E-BE83-2A276A77FB1F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Dlna", "Emby.Dlna\Emby.Dlna.csproj", "{805844AB-E92F-45E6-9D99-4F6D48D129A5}"
EndProject
-Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Emby.Server.Core", "Emby.Server.Core\Emby.Server.Core.xproj", "{65AA7D67-8059-40CD-91F1-16D02687226C}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Drawing.ImageMagick", "Emby.Drawing.ImageMagick\Emby.Drawing.ImageMagick.csproj", "{6CFEE013-6E7C-432B-AC37-CABF0880C69A}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SocketHttpListener.Portable", "SocketHttpListener.Portable\SocketHttpListener.Portable.csproj", "{4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Drawing.Skia", "Emby.Drawing.Skia\Emby.Drawing.Skia.csproj", "{2312DA6D-FF86-4597-9777-BCEEC32D96DD}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Server.Core", "Emby.Server.Core\Emby.Server.Core.csproj", "{776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Nat", "Mono.Nat\Mono.Nat.csproj", "{CB7F2326-6497-4A3D-BA03-48513B17A7BE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Common.Implementations", "Emby.Common.Implementations\Emby.Common.Implementations.csproj", "{1E37A338-9F57-4B70-BD6D-BB9C591E319B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SocketHttpListener", "SocketHttpListener\SocketHttpListener.csproj", "{1D74413B-E7CF-455B-B021-F52BDF881542}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -556,37 +554,6 @@ Global
{175A9388-F352-4586-A6B4-070DED62B644}.Signed|x64.Build.0 = Release|Any CPU
{175A9388-F352-4586-A6B4-070DED62B644}.Signed|x86.ActiveCfg = Release|Any CPU
{175A9388-F352-4586-A6B4-070DED62B644}.Signed|x86.Build.0 = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Debug|Win32.ActiveCfg = Debug|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Debug|x64.ActiveCfg = Debug|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Debug|x86.ActiveCfg = Debug|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release Mono|Any CPU.Build.0 = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release Mono|Win32.ActiveCfg = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release Mono|x64.ActiveCfg = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release Mono|x86.ActiveCfg = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release|Any CPU.Build.0 = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release|Win32.ActiveCfg = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release|x64.ActiveCfg = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Release|x86.ActiveCfg = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|Any CPU.ActiveCfg = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|Any CPU.Build.0 = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|Mixed Platforms.Build.0 = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|Win32.ActiveCfg = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|Win32.Build.0 = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|x64.ActiveCfg = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|x64.Build.0 = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|x86.ActiveCfg = Release|Any CPU
- {B90AB8F2-1BFF-4568-A3FD-2A338A435A75}.Signed|x86.Build.0 = Release|Any CPU
{08FFF49B-F175-4807-A2B5-73B0EBD9F716}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{08FFF49B-F175-4807-A2B5-73B0EBD9F716}.Debug|Any CPU.Build.0 = Debug|Any CPU
{08FFF49B-F175-4807-A2B5-73B0EBD9F716}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@@ -698,45 +665,6 @@ Global
{713F42B5-878E-499D-A878-E4C652B1D5E8}.Signed|x64.Build.0 = Release|Any CPU
{713F42B5-878E-499D-A878-E4C652B1D5E8}.Signed|x86.ActiveCfg = Release|Any CPU
{713F42B5-878E-499D-A878-E4C652B1D5E8}.Signed|x86.Build.0 = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|Win32.ActiveCfg = Debug|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|Win32.Build.0 = Debug|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|x64.ActiveCfg = Debug|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|x64.Build.0 = Debug|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|x86.ActiveCfg = Debug|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Debug|x86.Build.0 = Debug|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Release Mono|Win32.ActiveCfg = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Release Mono|Win32.Build.0 = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Release Mono|x64.ActiveCfg = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Release Mono|x64.Build.0 = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Release Mono|x86.ActiveCfg = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Release Mono|x86.Build.0 = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Release|Any CPU.Build.0 = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Release|Win32.ActiveCfg = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Release|Win32.Build.0 = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Release|x64.ActiveCfg = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Release|x64.Build.0 = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Release|x86.ActiveCfg = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Release|x86.Build.0 = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|Any CPU.ActiveCfg = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|Any CPU.Build.0 = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|Mixed Platforms.Build.0 = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|Win32.ActiveCfg = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|Win32.Build.0 = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|x64.ActiveCfg = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|x64.Build.0 = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|x86.ActiveCfg = Release|Any CPU
- {5A27010A-09C6-4E86-93EA-437484C10917}.Signed|x86.Build.0 = Release|Any CPU
{88AE38DF-19D7-406F-A6A9-09527719A21E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{88AE38DF-19D7-406F-A6A9-09527719A21E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{88AE38DF-19D7-406F-A6A9-09527719A21E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@@ -817,45 +745,6 @@ Global
{E383961B-9356-4D5D-8233-9A1079D03055}.Signed|x64.Build.0 = Release|Any CPU
{E383961B-9356-4D5D-8233-9A1079D03055}.Signed|x86.ActiveCfg = Release|Any CPU
{E383961B-9356-4D5D-8233-9A1079D03055}.Signed|x86.Build.0 = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|Win32.ActiveCfg = Debug|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|Win32.Build.0 = Debug|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|x64.ActiveCfg = Debug|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|x64.Build.0 = Debug|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|x86.ActiveCfg = Debug|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Debug|x86.Build.0 = Debug|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release Mono|Win32.ActiveCfg = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release Mono|Win32.Build.0 = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release Mono|x64.ActiveCfg = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release Mono|x64.Build.0 = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release Mono|x86.ActiveCfg = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release Mono|x86.Build.0 = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|Any CPU.Build.0 = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|Win32.ActiveCfg = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|Win32.Build.0 = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|x64.ActiveCfg = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|x64.Build.0 = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|x86.ActiveCfg = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Release|x86.Build.0 = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|Any CPU.ActiveCfg = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|Any CPU.Build.0 = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|Mixed Platforms.Build.0 = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|Win32.ActiveCfg = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|Win32.Build.0 = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|x64.ActiveCfg = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|x64.Build.0 = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|x86.ActiveCfg = Release|Any CPU
- {4ACAB6A2-AC9A-4B50-BAEC-1FE4A1F3B8BC}.Signed|x86.Build.0 = Release|Any CPU
{21002819-C39A-4D3E-BE83-2A276A77FB1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{21002819-C39A-4D3E-BE83-2A276A77FB1F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{21002819-C39A-4D3E-BE83-2A276A77FB1F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@@ -936,45 +825,6 @@ Global
{805844AB-E92F-45E6-9D99-4F6D48D129A5}.Signed|x64.Build.0 = Release|Any CPU
{805844AB-E92F-45E6-9D99-4F6D48D129A5}.Signed|x86.ActiveCfg = Release|Any CPU
{805844AB-E92F-45E6-9D99-4F6D48D129A5}.Signed|x86.Build.0 = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|Win32.ActiveCfg = Debug|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|Win32.Build.0 = Debug|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|x64.ActiveCfg = Debug|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|x64.Build.0 = Debug|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|x86.ActiveCfg = Debug|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Debug|x86.Build.0 = Debug|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Release Mono|Win32.ActiveCfg = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Release Mono|Win32.Build.0 = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Release Mono|x64.ActiveCfg = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Release Mono|x64.Build.0 = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Release Mono|x86.ActiveCfg = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Release Mono|x86.Build.0 = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|Any CPU.Build.0 = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|Win32.ActiveCfg = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|Win32.Build.0 = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|x64.ActiveCfg = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|x64.Build.0 = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|x86.ActiveCfg = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Release|x86.Build.0 = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|Any CPU.ActiveCfg = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|Any CPU.Build.0 = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|Mixed Platforms.Build.0 = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|Win32.ActiveCfg = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|Win32.Build.0 = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|x64.ActiveCfg = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|x64.Build.0 = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|x86.ActiveCfg = Release|Any CPU
- {65AA7D67-8059-40CD-91F1-16D02687226C}.Signed|x86.Build.0 = Release|Any CPU
{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@@ -1015,46 +865,6 @@ Global
{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Signed|x64.Build.0 = Release|Any CPU
{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Signed|x86.ActiveCfg = Release|Any CPU
{6CFEE013-6E7C-432B-AC37-CABF0880C69A}.Signed|x86.Build.0 = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|Win32.ActiveCfg = Debug|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|Win32.Build.0 = Debug|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|x64.ActiveCfg = Debug|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|x64.Build.0 = Debug|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|x86.ActiveCfg = Debug|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Debug|x86.Build.0 = Debug|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|Any CPU.Build.0 = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|Win32.ActiveCfg = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|Win32.Build.0 = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|x64.ActiveCfg = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|x64.Build.0 = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|x86.ActiveCfg = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release Mono|x86.Build.0 = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|Any CPU.Build.0 = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|Win32.ActiveCfg = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|Win32.Build.0 = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|x64.ActiveCfg = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|x64.Build.0 = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|x86.ActiveCfg = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Release|x86.Build.0 = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|Any CPU.ActiveCfg = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|Any CPU.Build.0 = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|Mixed Platforms.Build.0 = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|Win32.ActiveCfg = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|Win32.Build.0 = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|x64.ActiveCfg = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|x64.Build.0 = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|x86.ActiveCfg = Release|Any CPU
- {4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|x86.Build.0 = Release|Any CPU
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@@ -1095,6 +905,166 @@ Global
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Signed|x64.Build.0 = Release|Any CPU
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Signed|x86.ActiveCfg = Release|Any CPU
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Signed|x86.Build.0 = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|Win32.Build.0 = Debug|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|x64.Build.0 = Debug|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Debug|x86.Build.0 = Debug|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|Any CPU.Build.0 = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|Win32.ActiveCfg = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|Win32.Build.0 = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|x64.ActiveCfg = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|x64.Build.0 = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|x86.ActiveCfg = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release Mono|x86.Build.0 = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|Win32.ActiveCfg = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|Win32.Build.0 = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|x64.ActiveCfg = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|x64.Build.0 = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|x86.ActiveCfg = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Release|x86.Build.0 = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|Any CPU.ActiveCfg = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|Any CPU.Build.0 = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|Mixed Platforms.Build.0 = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|Win32.ActiveCfg = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|Win32.Build.0 = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|x64.ActiveCfg = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|x64.Build.0 = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|x86.ActiveCfg = Release|Any CPU
+ {776B9F0C-5195-45E3-9A36-1CC1F0D8E0B0}.Signed|x86.Build.0 = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|Win32.Build.0 = Debug|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|x64.Build.0 = Debug|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Debug|x86.Build.0 = Debug|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|Any CPU.Build.0 = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|Win32.ActiveCfg = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|Win32.Build.0 = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|x64.ActiveCfg = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|x64.Build.0 = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|x86.ActiveCfg = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release Mono|x86.Build.0 = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|Win32.ActiveCfg = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|Win32.Build.0 = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|x64.ActiveCfg = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|x64.Build.0 = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|x86.ActiveCfg = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Release|x86.Build.0 = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|Any CPU.ActiveCfg = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|Any CPU.Build.0 = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|Mixed Platforms.Build.0 = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|Win32.ActiveCfg = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|Win32.Build.0 = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|x64.ActiveCfg = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|x64.Build.0 = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|x86.ActiveCfg = Release|Any CPU
+ {CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|x86.Build.0 = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|Win32.Build.0 = Debug|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|x64.Build.0 = Debug|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|x86.Build.0 = Debug|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|Any CPU.Build.0 = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|Win32.ActiveCfg = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|Win32.Build.0 = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|x64.ActiveCfg = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|x64.Build.0 = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|x86.ActiveCfg = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|x86.Build.0 = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|Win32.ActiveCfg = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|Win32.Build.0 = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|x64.ActiveCfg = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|x64.Build.0 = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|x86.ActiveCfg = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|x86.Build.0 = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|Any CPU.ActiveCfg = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|Any CPU.Build.0 = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|Mixed Platforms.Build.0 = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|Win32.ActiveCfg = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|Win32.Build.0 = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|x64.ActiveCfg = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|x64.Build.0 = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|x86.ActiveCfg = Release|Any CPU
+ {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|x86.Build.0 = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|Win32.Build.0 = Debug|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|x64.Build.0 = Debug|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|x86.Build.0 = Debug|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|Any CPU.Build.0 = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|Win32.ActiveCfg = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|Win32.Build.0 = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|x64.ActiveCfg = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|x64.Build.0 = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|x86.ActiveCfg = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release Mono|x86.Build.0 = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|Win32.ActiveCfg = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|Win32.Build.0 = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|x64.ActiveCfg = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|x64.Build.0 = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|x86.ActiveCfg = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Release|x86.Build.0 = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|Any CPU.ActiveCfg = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|Any CPU.Build.0 = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|Mixed Platforms.Build.0 = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|Win32.ActiveCfg = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|Win32.Build.0 = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|x64.ActiveCfg = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|x64.Build.0 = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|x86.ActiveCfg = Release|Any CPU
+ {1D74413B-E7CF-455B-B021-F52BDF881542}.Signed|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Mono.Nat/Mono.Nat.csproj b/Mono.Nat/Mono.Nat.csproj
new file mode 100644
index 000000000..d006b657b
--- /dev/null
+++ b/Mono.Nat/Mono.Nat.csproj
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{CB7F2326-6497-4A3D-BA03-48513B17A7BE}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Mono.Nat</RootNamespace>
+ <AssemblyName>Mono.Nat</AssemblyName>
+ <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <TargetFrameworkProfile />
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="..\SharedVersion.cs">
+ <Link>Properties\SharedVersion.cs</Link>
+ </Compile>
+ <Compile Include="AbstractNatDevice.cs" />
+ <Compile Include="AsyncResults\AsyncResult.cs" />
+ <Compile Include="Enums\MapState.cs" />
+ <Compile Include="Enums\ProtocolType.cs" />
+ <Compile Include="EventArgs\DeviceEventArgs.cs" />
+ <Compile Include="Exceptions\MappingException.cs" />
+ <Compile Include="INatDevice.cs" />
+ <Compile Include="ISearcher.cs" />
+ <Compile Include="Mapping.cs" />
+ <Compile Include="NatProtocol.cs" />
+ <Compile Include="NatUtility.cs" />
+ <Compile Include="Pmp\AsyncResults\PortMapAsyncResult.cs" />
+ <Compile Include="Pmp\PmpConstants.cs" />
+ <Compile Include="Pmp\PmpNatDevice.cs" />
+ <Compile Include="Pmp\Searchers\PmpSearcher.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="Upnp\Messages\DiscoverDeviceMessage.cs" />
+ <Compile Include="Upnp\Messages\ErrorMessage.cs" />
+ <Compile Include="Upnp\Messages\GetServicesMessage.cs" />
+ <Compile Include="Upnp\Messages\Requests\CreatePortMappingMessage.cs" />
+ <Compile Include="Upnp\Messages\Responses\CreatePortMappingResponseMessage.cs" />
+ <Compile Include="Upnp\Messages\UpnpMessage.cs" />
+ <Compile Include="Upnp\Searchers\UpnpSearcher.cs" />
+ <Compile Include="Upnp\Upnp.cs" />
+ <Compile Include="Upnp\UpnpNatDevice.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Upnp\AsyncResults\" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
+ <Project>{9142eefa-7570-41e1-bfcc-468bb571af2f}</Project>
+ <Name>MediaBrowser.Common</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\MediaBrowser.Controller\MediaBrowser.Controller.csproj">
+ <Project>{17e1f4e6-8abd-4fe5-9ecf-43d4b6087ba2}</Project>
+ <Name>MediaBrowser.Controller</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj">
+ <Project>{7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}</Project>
+ <Name>MediaBrowser.Model</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/Mono.Nat/Mono.Nat.xproj b/Mono.Nat/Mono.Nat.xproj
deleted file mode 100644
index 3479a2a67..000000000
--- a/Mono.Nat/Mono.Nat.xproj
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
- <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
- </PropertyGroup>
- <Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.Props" Condition="'$(VSToolsPath)' != ''" />
- <PropertyGroup Label="Globals">
- <ProjectGuid>4acab6a2-ac9a-4b50-baec-1fe4a1f3b8bc</ProjectGuid>
- <RootNamespace>Mono.Nat</RootNamespace>
- <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">.\obj</BaseIntermediateOutputPath>
- <OutputPath Condition="'$(OutputPath)'=='' ">.\bin\</OutputPath>
- <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
- </PropertyGroup>
- <PropertyGroup>
- <SchemaVersion>2.0</SchemaVersion>
- </PropertyGroup>
- <ItemGroup>
- <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj" />
- <ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj" />
- </ItemGroup>
- <Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.targets" Condition="'$(VSToolsPath)' != ''" />
-</Project> \ No newline at end of file
diff --git a/Mono.Nat/Properties/AssemblyInfo.cs b/Mono.Nat/Properties/AssemblyInfo.cs
index 2a4e75c21..18b183817 100644
--- a/Mono.Nat/Properties/AssemblyInfo.cs
+++ b/Mono.Nat/Properties/AssemblyInfo.cs
@@ -2,15 +2,33 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
-// General Information about an assembly is controlled through the following
+// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
+[assembly: AssemblyTitle("Mono.Nat")]
+[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Mono.Nat")]
+[assembly: AssemblyCopyright("Copyright © 2017")]
[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("cb7f2326-6497-4a3d-ba03-48513b17a7be")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")] \ No newline at end of file
diff --git a/Mono.Nat/project.json b/Mono.Nat/project.json
deleted file mode 100644
index 3c38a62e1..000000000
--- a/Mono.Nat/project.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "version": "1.0.0-*",
-
- "dependencies": {
-
- },
-
- "frameworks": {
- "net46": {
- "frameworkAssemblies": {
- "System.Collections": "4.0.0.0",
- "System.Net": "4.0.0.0",
- "System.Runtime": "4.0.0.0",
- "System.Threading": "4.0.0.0",
- "System.Threading.Tasks": "4.0.0.0",
- "System.Xml": "4.0.0.0"
- },
- "dependencies": {
- "MediaBrowser.Common": {
- "target": "project"
- },
- "MediaBrowser.Model": {
- "target": "project"
- }
- }
- },
- "netstandard1.6": {
- "imports": "dnxcore50",
- "dependencies": {
- "NETStandard.Library": "1.6.1",
- "MediaBrowser.Common": {
- "target": "project"
- },
- "MediaBrowser.Model": {
- "target": "project"
- },
- "System.Net.NetworkInformation": "4.3.0"
- }
- }
- }
-}
diff --git a/RSSDP/SsdpCommunicationsServer.cs b/RSSDP/SsdpCommunicationsServer.cs
index e9dc4c54f..91004b76f 100644
--- a/RSSDP/SsdpCommunicationsServer.cs
+++ b/RSSDP/SsdpCommunicationsServer.cs
@@ -177,7 +177,7 @@ namespace Rssdp.Infrastructure
{
try
{
- await socket.SendWithLockAsync(messageData, messageData.Length, destination, cancellationToken).ConfigureAwait(false);
+ await socket.SendToAsync(messageData, 0, messageData.Length, destination, cancellationToken).ConfigureAwait(false);
}
catch (ObjectDisposedException)
{
@@ -392,11 +392,13 @@ namespace Rssdp.Infrastructure
var t = Task.Run(async () =>
{
var cancelled = false;
+ var receiveBuffer = new byte[8192];
+
while (!cancelled)
{
try
{
- var result = await socket.ReceiveAsync(CancellationToken.None).ConfigureAwait(false);
+ var result = await socket.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, CancellationToken.None).ConfigureAwait(false);
if (result.ReceivedBytes > 0)
{
diff --git a/SocketHttpListener.Portable/Net/ChunkedInputStream.cs b/SocketHttpListener.Portable/Net/ChunkedInputStream.cs
deleted file mode 100644
index 6dfd8d8a1..000000000
--- a/SocketHttpListener.Portable/Net/ChunkedInputStream.cs
+++ /dev/null
@@ -1,160 +0,0 @@
-using System;
-using System.IO;
-using System.Runtime.InteropServices;
-using SocketHttpListener.Primitives;
-
-namespace SocketHttpListener.Net
-{
- class ChunkedInputStream : RequestStream
- {
- bool disposed;
- ChunkStream decoder;
- HttpListenerContext context;
- bool no_more_data;
-
- //class ReadBufferState
- //{
- // public byte[] Buffer;
- // public int Offset;
- // public int Count;
- // public int InitialCount;
- // public HttpStreamAsyncResult Ares;
- // public ReadBufferState(byte[] buffer, int offset, int count,
- // HttpStreamAsyncResult ares)
- // {
- // Buffer = buffer;
- // Offset = offset;
- // Count = count;
- // InitialCount = count;
- // Ares = ares;
- // }
- //}
-
- public ChunkedInputStream(HttpListenerContext context, Stream stream,
- byte[] buffer, int offset, int length)
- : base(stream, buffer, offset, length)
- {
- this.context = context;
- WebHeaderCollection coll = (WebHeaderCollection)context.Request.Headers;
- decoder = new ChunkStream(coll);
- }
-
- //public ChunkStream Decoder
- //{
- // get { return decoder; }
- // set { decoder = value; }
- //}
-
- //public override int Read([In, Out] byte[] buffer, int offset, int count)
- //{
- // IAsyncResult ares = BeginRead(buffer, offset, count, null, null);
- // return EndRead(ares);
- //}
-
- //public override IAsyncResult BeginRead(byte[] buffer, int offset, int count,
- // AsyncCallback cback, object state)
- //{
- // if (disposed)
- // throw new ObjectDisposedException(GetType().ToString());
-
- // if (buffer == null)
- // throw new ArgumentNullException("buffer");
-
- // int len = buffer.Length;
- // if (offset < 0 || offset > len)
- // throw new ArgumentOutOfRangeException("offset exceeds the size of buffer");
-
- // if (count < 0 || offset > len - count)
- // throw new ArgumentOutOfRangeException("offset+size exceeds the size of buffer");
-
- // HttpStreamAsyncResult ares = new HttpStreamAsyncResult();
- // ares.Callback = cback;
- // ares.State = state;
- // if (no_more_data)
- // {
- // ares.Complete();
- // return ares;
- // }
- // int nread = decoder.Read(buffer, offset, count);
- // offset += nread;
- // count -= nread;
- // if (count == 0)
- // {
- // // got all we wanted, no need to bother the decoder yet
- // ares.Count = nread;
- // ares.Complete();
- // return ares;
- // }
- // if (!decoder.WantMore)
- // {
- // no_more_data = nread == 0;
- // ares.Count = nread;
- // ares.Complete();
- // return ares;
- // }
- // ares.Buffer = new byte[8192];
- // ares.Offset = 0;
- // ares.Count = 8192;
- // ReadBufferState rb = new ReadBufferState(buffer, offset, count, ares);
- // rb.InitialCount += nread;
- // base.BeginRead(ares.Buffer, ares.Offset, ares.Count, OnRead, rb);
- // return ares;
- //}
-
- //void OnRead(IAsyncResult base_ares)
- //{
- // ReadBufferState rb = (ReadBufferState)base_ares.AsyncState;
- // HttpStreamAsyncResult ares = rb.Ares;
- // try
- // {
- // int nread = base.EndRead(base_ares);
- // decoder.Write(ares.Buffer, ares.Offset, nread);
- // nread = decoder.Read(rb.Buffer, rb.Offset, rb.Count);
- // rb.Offset += nread;
- // rb.Count -= nread;
- // if (rb.Count == 0 || !decoder.WantMore || nread == 0)
- // {
- // no_more_data = !decoder.WantMore && nread == 0;
- // ares.Count = rb.InitialCount - rb.Count;
- // ares.Complete();
- // return;
- // }
- // ares.Offset = 0;
- // ares.Count = Math.Min(8192, decoder.ChunkLeft + 6);
- // base.BeginRead(ares.Buffer, ares.Offset, ares.Count, OnRead, rb);
- // }
- // catch (Exception e)
- // {
- // context.Connection.SendError(e.Message, 400);
- // ares.Complete(e);
- // }
- //}
-
- //public override int EndRead(IAsyncResult ares)
- //{
- // if (disposed)
- // throw new ObjectDisposedException(GetType().ToString());
-
- // HttpStreamAsyncResult my_ares = ares as HttpStreamAsyncResult;
- // if (ares == null)
- // throw new ArgumentException("Invalid IAsyncResult", "ares");
-
- // if (!ares.IsCompleted)
- // ares.AsyncWaitHandle.WaitOne();
-
- // if (my_ares.Error != null)
- // throw new HttpListenerException(400, "I/O operation aborted: " + my_ares.Error.Message);
-
- // return my_ares.Count;
- //}
-
- //protected override void Dispose(bool disposing)
- //{
- // if (!disposed)
- // {
- // disposed = true;
- // base.Dispose(disposing);
- // }
- //}
- }
-}
diff --git a/SocketHttpListener.Portable/Net/HttpStreamAsyncResult.cs b/SocketHttpListener.Portable/Net/HttpStreamAsyncResult.cs
deleted file mode 100644
index 518c45acb..000000000
--- a/SocketHttpListener.Portable/Net/HttpStreamAsyncResult.cs
+++ /dev/null
@@ -1,77 +0,0 @@
-using System;
-using System.Threading;
-
-namespace SocketHttpListener.Net
-{
- class HttpStreamAsyncResult : IAsyncResult
- {
- object locker = new object();
- ManualResetEvent handle;
- bool completed;
-
- internal byte[] Buffer;
- internal int Offset;
- internal int Count;
- internal AsyncCallback Callback;
- internal object State;
- internal int SynchRead;
- internal Exception Error;
-
- public void Complete(Exception e)
- {
- Error = e;
- Complete();
- }
-
- public void Complete()
- {
- lock (locker)
- {
- if (completed)
- return;
-
- completed = true;
- if (handle != null)
- handle.Set();
-
- if (Callback != null)
- Callback.BeginInvoke(this, null, null);
- }
- }
-
- public object AsyncState
- {
- get { return State; }
- }
-
- public WaitHandle AsyncWaitHandle
- {
- get
- {
- lock (locker)
- {
- if (handle == null)
- handle = new ManualResetEvent(completed);
- }
-
- return handle;
- }
- }
-
- public bool CompletedSynchronously
- {
- get { return (SynchRead == Count); }
- }
-
- public bool IsCompleted
- {
- get
- {
- lock (locker)
- {
- return completed;
- }
- }
- }
- }
-}
diff --git a/SocketHttpListener.Portable/Net/RequestStream.cs b/SocketHttpListener.Portable/Net/RequestStream.cs
deleted file mode 100644
index 58030500d..000000000
--- a/SocketHttpListener.Portable/Net/RequestStream.cs
+++ /dev/null
@@ -1,231 +0,0 @@
-using System;
-using System.IO;
-using System.Runtime.InteropServices;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace SocketHttpListener.Net
-{
- class RequestStream : Stream
- {
- byte[] buffer;
- int offset;
- int length;
- long remaining_body;
- bool disposed;
- Stream stream;
-
- internal RequestStream(Stream stream, byte[] buffer, int offset, int length)
- : this(stream, buffer, offset, length, -1)
- {
- }
-
- internal RequestStream(Stream stream, byte[] buffer, int offset, int length, long contentlength)
- {
- this.stream = stream;
- this.buffer = buffer;
- this.offset = offset;
- this.length = length;
- this.remaining_body = contentlength;
- }
-
- public override bool CanRead
- {
- get { return true; }
- }
-
- public override bool CanSeek
- {
- get { return false; }
- }
-
- public override bool CanWrite
- {
- get { return false; }
- }
-
- public override long Length
- {
- get { throw new NotSupportedException(); }
- }
-
- public override long Position
- {
- get { throw new NotSupportedException(); }
- set { throw new NotSupportedException(); }
- }
-
-
- protected override void Dispose(bool disposing)
- {
- disposed = true;
- }
-
- public override void Flush()
- {
- }
-
-
- // Returns 0 if we can keep reading from the base stream,
- // > 0 if we read something from the buffer.
- // -1 if we had a content length set and we finished reading that many bytes.
- int FillFromBuffer(byte[] buffer, int off, int count)
- {
- if (buffer == null)
- throw new ArgumentNullException("buffer");
- if (off < 0)
- throw new ArgumentOutOfRangeException("offset", "< 0");
- if (count < 0)
- throw new ArgumentOutOfRangeException("count", "< 0");
- int len = buffer.Length;
- if (off > len)
- throw new ArgumentException("destination offset is beyond array size");
- if (off > len - count)
- throw new ArgumentException("Reading would overrun buffer");
-
- if (this.remaining_body == 0)
- return -1;
-
- if (this.length == 0)
- return 0;
-
- int size = Math.Min(this.length, count);
- if (this.remaining_body > 0)
- size = (int)Math.Min(size, this.remaining_body);
-
- if (this.offset > this.buffer.Length - size)
- {
- size = Math.Min(size, this.buffer.Length - this.offset);
- }
- if (size == 0)
- return 0;
-
- Buffer.BlockCopy(this.buffer, this.offset, buffer, off, size);
- this.offset += size;
- this.length -= size;
- if (this.remaining_body > 0)
- remaining_body -= size;
- return size;
- }
-
- public override int Read([In, Out] byte[] buffer, int offset, int count)
- {
- if (disposed)
- throw new ObjectDisposedException(typeof(RequestStream).ToString());
-
- // Call FillFromBuffer to check for buffer boundaries even when remaining_body is 0
- int nread = FillFromBuffer(buffer, offset, count);
- if (nread == -1)
- { // No more bytes available (Content-Length)
- return 0;
- }
- else if (nread > 0)
- {
- return nread;
- }
-
- nread = stream.Read(buffer, offset, count);
- if (nread > 0 && remaining_body > 0)
- remaining_body -= nread;
- return nread;
- }
-
- public override async Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
- {
- if (disposed)
- throw new ObjectDisposedException(typeof(RequestStream).ToString());
-
- int nread = FillFromBuffer(buffer, offset, count);
- if (nread > 0 || nread == -1)
- {
- return Math.Max(0, nread);
- }
-
- // Avoid reading past the end of the request to allow
- // for HTTP pipelining
- if (remaining_body >= 0 && count > remaining_body)
- count = (int)Math.Min(Int32.MaxValue, remaining_body);
-
- nread = await stream.ReadAsync(buffer, offset, count, cancellationToken).ConfigureAwait(false);
- if (remaining_body > 0 && nread > 0)
- remaining_body -= nread;
- return nread;
- }
-
- //public override IAsyncResult BeginRead(byte[] buffer, int offset, int count,
- // AsyncCallback cback, object state)
- //{
- // if (disposed)
- // throw new ObjectDisposedException(typeof(RequestStream).ToString());
-
- // int nread = FillFromBuffer(buffer, offset, count);
- // if (nread > 0 || nread == -1)
- // {
- // HttpStreamAsyncResult ares = new HttpStreamAsyncResult();
- // ares.Buffer = buffer;
- // ares.Offset = offset;
- // ares.Count = count;
- // ares.Callback = cback;
- // ares.State = state;
- // ares.SynchRead = Math.Max(0, nread);
- // ares.Complete();
- // return ares;
- // }
-
- // // Avoid reading past the end of the request to allow
- // // for HTTP pipelining
- // if (remaining_body >= 0 && count > remaining_body)
- // count = (int)Math.Min(Int32.MaxValue, remaining_body);
- // return stream.BeginRead(buffer, offset, count, cback, state);
- //}
-
- //public override int EndRead(IAsyncResult ares)
- //{
- // if (disposed)
- // throw new ObjectDisposedException(typeof(RequestStream).ToString());
-
- // if (ares == null)
- // throw new ArgumentNullException("async_result");
-
- // if (ares is HttpStreamAsyncResult)
- // {
- // HttpStreamAsyncResult r = (HttpStreamAsyncResult)ares;
- // if (!ares.IsCompleted)
- // ares.AsyncWaitHandle.WaitOne();
- // return r.SynchRead;
- // }
-
- // // Close on exception?
- // int nread = stream.EndRead(ares);
- // if (remaining_body > 0 && nread > 0)
- // remaining_body -= nread;
- // return nread;
- //}
-
- public override long Seek(long offset, SeekOrigin origin)
- {
- throw new NotSupportedException();
- }
-
- public override void SetLength(long value)
- {
- throw new NotSupportedException();
- }
-
- public override void Write(byte[] buffer, int offset, int count)
- {
- throw new NotSupportedException();
- }
-
- //public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count,
- // AsyncCallback cback, object state)
- //{
- // throw new NotSupportedException();
- //}
-
- //public override void EndWrite(IAsyncResult async_result)
- //{
- // throw new NotSupportedException();
- //}
- }
-}
diff --git a/SocketHttpListener.Portable/Primitives/HttpListenerException.cs b/SocketHttpListener.Portable/Primitives/HttpListenerException.cs
deleted file mode 100644
index 7b383fd23..000000000
--- a/SocketHttpListener.Portable/Primitives/HttpListenerException.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace SocketHttpListener.Primitives
-{
- public class HttpListenerException : Exception
- {
- public HttpListenerException(int statusCode, string message)
- : base(message)
- {
-
- }
- }
-}
diff --git a/SocketHttpListener.Portable/Properties/AssemblyInfo.cs b/SocketHttpListener.Portable/Properties/AssemblyInfo.cs
deleted file mode 100644
index 870426460..000000000
--- a/SocketHttpListener.Portable/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using System.Resources;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("SocketHttpListener.Portable")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("SocketHttpListener.Portable")]
-[assembly: AssemblyCopyright("Copyright © 2016")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-[assembly: NeutralResourcesLanguage("en")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/SocketHttpListener.Portable/SocketHttpListener.Portable.nuget.targets b/SocketHttpListener.Portable/SocketHttpListener.Portable.nuget.targets
deleted file mode 100644
index e69ce0e64..000000000
--- a/SocketHttpListener.Portable/SocketHttpListener.Portable.nuget.targets
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <Target Name="EmitMSBuildWarning" BeforeTargets="Build">
- <Warning Text="Packages containing MSBuild targets and props files cannot be fully installed in projects targeting multiple frameworks. The MSBuild targets and props files have been ignored." />
- </Target>
-</Project> \ No newline at end of file
diff --git a/SocketHttpListener.Portable/packages.config b/SocketHttpListener.Portable/packages.config
deleted file mode 100644
index 2aae715b5..000000000
--- a/SocketHttpListener.Portable/packages.config
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
- <package id="MediaBrowser.Common" version="3.0.689" targetFramework="portable45-net45+win8" />
- <package id="Patterns.Logging" version="1.0.0.6" targetFramework="portable45-net45+win8" />
-</packages> \ No newline at end of file
diff --git a/SocketHttpListener.Portable/project.json b/SocketHttpListener.Portable/project.json
deleted file mode 100644
index fbbe9eaf3..000000000
--- a/SocketHttpListener.Portable/project.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "frameworks":{
- "netstandard1.6":{
- "dependencies":{
- "NETStandard.Library":"1.6.0",
- }
- },
- ".NETPortable,Version=v4.5,Profile=Profile7":{
- "buildOptions": {
- "define": [ ]
- },
- "frameworkAssemblies":{
-
- }
- }
- }
-} \ No newline at end of file
diff --git a/SocketHttpListener.Portable/ByteOrder.cs b/SocketHttpListener/ByteOrder.cs
index f5db52fd7..f5db52fd7 100644
--- a/SocketHttpListener.Portable/ByteOrder.cs
+++ b/SocketHttpListener/ByteOrder.cs
diff --git a/SocketHttpListener.Portable/CloseEventArgs.cs b/SocketHttpListener/CloseEventArgs.cs
index b1bb4b196..b1bb4b196 100644
--- a/SocketHttpListener.Portable/CloseEventArgs.cs
+++ b/SocketHttpListener/CloseEventArgs.cs
diff --git a/SocketHttpListener.Portable/CloseStatusCode.cs b/SocketHttpListener/CloseStatusCode.cs
index 62a268bce..62a268bce 100644
--- a/SocketHttpListener.Portable/CloseStatusCode.cs
+++ b/SocketHttpListener/CloseStatusCode.cs
diff --git a/SocketHttpListener.Portable/CompressionMethod.cs b/SocketHttpListener/CompressionMethod.cs
index 36a48d94c..36a48d94c 100644
--- a/SocketHttpListener.Portable/CompressionMethod.cs
+++ b/SocketHttpListener/CompressionMethod.cs
diff --git a/SocketHttpListener.Portable/ErrorEventArgs.cs b/SocketHttpListener/ErrorEventArgs.cs
index bf1d6fc95..bf1d6fc95 100644
--- a/SocketHttpListener.Portable/ErrorEventArgs.cs
+++ b/SocketHttpListener/ErrorEventArgs.cs
diff --git a/SocketHttpListener.Portable/Ext.cs b/SocketHttpListener/Ext.cs
index 87f0887ed..87f0887ed 100644
--- a/SocketHttpListener.Portable/Ext.cs
+++ b/SocketHttpListener/Ext.cs
diff --git a/SocketHttpListener.Portable/Fin.cs b/SocketHttpListener/Fin.cs
index f91401b99..f91401b99 100644
--- a/SocketHttpListener.Portable/Fin.cs
+++ b/SocketHttpListener/Fin.cs
diff --git a/SocketHttpListener.Portable/HttpBase.cs b/SocketHttpListener/HttpBase.cs
index 5172ba497..5172ba497 100644
--- a/SocketHttpListener.Portable/HttpBase.cs
+++ b/SocketHttpListener/HttpBase.cs
diff --git a/SocketHttpListener.Portable/HttpResponse.cs b/SocketHttpListener/HttpResponse.cs
index 5aca28c7c..5aca28c7c 100644
--- a/SocketHttpListener.Portable/HttpResponse.cs
+++ b/SocketHttpListener/HttpResponse.cs
diff --git a/SocketHttpListener.Portable/Mask.cs b/SocketHttpListener/Mask.cs
index adc2f098e..adc2f098e 100644
--- a/SocketHttpListener.Portable/Mask.cs
+++ b/SocketHttpListener/Mask.cs
diff --git a/SocketHttpListener.Portable/MessageEventArgs.cs b/SocketHttpListener/MessageEventArgs.cs
index 9dbadb9ab..9dbadb9ab 100644
--- a/SocketHttpListener.Portable/MessageEventArgs.cs
+++ b/SocketHttpListener/MessageEventArgs.cs
diff --git a/SocketHttpListener.Portable/Net/AuthenticationSchemeSelector.cs b/SocketHttpListener/Net/AuthenticationSchemeSelector.cs
index c6e7e538e..c6e7e538e 100644
--- a/SocketHttpListener.Portable/Net/AuthenticationSchemeSelector.cs
+++ b/SocketHttpListener/Net/AuthenticationSchemeSelector.cs
diff --git a/SocketHttpListener.Portable/Net/ChunkStream.cs b/SocketHttpListener/Net/ChunkStream.cs
index 3f3b4a667..2de6c2c18 100644
--- a/SocketHttpListener.Portable/Net/ChunkStream.cs
+++ b/SocketHttpListener/Net/ChunkStream.cs
@@ -8,9 +8,39 @@ using System.Text;
namespace SocketHttpListener.Net
{
- class ChunkStream
+ // Licensed to the .NET Foundation under one or more agreements.
+ // See the LICENSE file in the project root for more information.
+ //
+ // System.Net.ResponseStream
+ //
+ // Author:
+ // Gonzalo Paniagua Javier (gonzalo@novell.com)
+ //
+ // Copyright (c) 2005 Novell, Inc. (http://www.novell.com)
+ //
+ // Permission is hereby granted, free of charge, to any person obtaining
+ // a copy of this software and associated documentation files (the
+ // "Software"), to deal in the Software without restriction, including
+ // without limitation the rights to use, copy, modify, merge, publish,
+ // distribute, sublicense, and/or sell copies of the Software, and to
+ // permit persons to whom the Software is furnished to do so, subject to
+ // the following conditions:
+ //
+ // The above copyright notice and this permission notice shall be
+ // included in all copies or substantial portions of the Software.
+ //
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ //
+
+ internal sealed class ChunkStream
{
- enum State
+ private enum State
{
None,
PartialSize,
@@ -19,14 +49,14 @@ namespace SocketHttpListener.Net
Trailer
}
- class Chunk
+ private class Chunk
{
public byte[] Bytes;
public int Offset;
public Chunk(byte[] chunk)
{
- this.Bytes = chunk;
+ Bytes = chunk;
}
public int Read(byte[] buffer, int offset, int size)
@@ -38,33 +68,38 @@ namespace SocketHttpListener.Net
}
}
- internal WebHeaderCollection headers;
- int chunkSize;
- int chunkRead;
- int totalWritten;
- State state;
- //byte [] waitBuffer;
- StringBuilder saved;
- bool sawCR;
- bool gotit;
- int trailerState;
- List<Chunk> chunks;
+ internal WebHeaderCollection _headers;
+ private int _chunkSize;
+ private int _chunkRead;
+ private int _totalWritten;
+ private State _state;
+ private StringBuilder _saved;
+ private bool _sawCR;
+ private bool _gotit;
+ private int _trailerState;
+ private List<Chunk> _chunks;
+
+ public ChunkStream(byte[] buffer, int offset, int size, WebHeaderCollection headers)
+ : this(headers)
+ {
+ Write(buffer, offset, size);
+ }
public ChunkStream(WebHeaderCollection headers)
{
- this.headers = headers;
- saved = new StringBuilder();
- chunks = new List<Chunk>();
- chunkSize = -1;
- totalWritten = 0;
+ _headers = headers;
+ _saved = new StringBuilder();
+ _chunks = new List<Chunk>();
+ _chunkSize = -1;
+ _totalWritten = 0;
}
public void ResetBuffer()
{
- chunkSize = -1;
- chunkRead = 0;
- totalWritten = 0;
- chunks.Clear();
+ _chunkSize = -1;
+ _chunkRead = 0;
+ _totalWritten = 0;
+ _chunks.Clear();
}
public void WriteAndReadBack(byte[] buffer, int offset, int size, ref int read)
@@ -79,15 +114,15 @@ namespace SocketHttpListener.Net
return ReadFromChunks(buffer, offset, size);
}
- int ReadFromChunks(byte[] buffer, int offset, int size)
+ private int ReadFromChunks(byte[] buffer, int offset, int size)
{
- int count = chunks.Count;
+ int count = _chunks.Count;
int nread = 0;
var chunksForRemoving = new List<Chunk>(count);
for (int i = 0; i < count; i++)
{
- Chunk chunk = (Chunk)chunks[i];
+ Chunk chunk = _chunks[i];
if (chunk.Offset == chunk.Bytes.Length)
{
@@ -101,7 +136,7 @@ namespace SocketHttpListener.Net
}
foreach (var chunk in chunksForRemoving)
- chunks.Remove(chunk);
+ _chunks.Remove(chunk);
return nread;
}
@@ -112,44 +147,44 @@ namespace SocketHttpListener.Net
InternalWrite(buffer, ref offset, size);
}
- void InternalWrite(byte[] buffer, ref int offset, int size)
+ private void InternalWrite(byte[] buffer, ref int offset, int size)
{
- if (state == State.None || state == State.PartialSize)
+ if (_state == State.None || _state == State.PartialSize)
{
- state = GetChunkSize(buffer, ref offset, size);
- if (state == State.PartialSize)
+ _state = GetChunkSize(buffer, ref offset, size);
+ if (_state == State.PartialSize)
return;
- saved.Length = 0;
- sawCR = false;
- gotit = false;
+ _saved.Length = 0;
+ _sawCR = false;
+ _gotit = false;
}
- if (state == State.Body && offset < size)
+ if (_state == State.Body && offset < size)
{
- state = ReadBody(buffer, ref offset, size);
- if (state == State.Body)
+ _state = ReadBody(buffer, ref offset, size);
+ if (_state == State.Body)
return;
}
- if (state == State.BodyFinished && offset < size)
+ if (_state == State.BodyFinished && offset < size)
{
- state = ReadCRLF(buffer, ref offset, size);
- if (state == State.BodyFinished)
+ _state = ReadCRLF(buffer, ref offset, size);
+ if (_state == State.BodyFinished)
return;
- sawCR = false;
+ _sawCR = false;
}
- if (state == State.Trailer && offset < size)
+ if (_state == State.Trailer && offset < size)
{
- state = ReadTrailer(buffer, ref offset, size);
- if (state == State.Trailer)
+ _state = ReadTrailer(buffer, ref offset, size);
+ if (_state == State.Trailer)
return;
- saved.Length = 0;
- sawCR = false;
- gotit = false;
+ _saved.Length = 0;
+ _sawCR = false;
+ _gotit = false;
}
if (offset < size)
@@ -158,21 +193,21 @@ namespace SocketHttpListener.Net
public bool WantMore
{
- get { return (chunkRead != chunkSize || chunkSize != 0 || state != State.None); }
+ get { return (_chunkRead != _chunkSize || _chunkSize != 0 || _state != State.None); }
}
public bool DataAvailable
{
get
{
- int count = chunks.Count;
+ int count = _chunks.Count;
for (int i = 0; i < count; i++)
{
- Chunk ch = (Chunk)chunks[i];
+ Chunk ch = _chunks[i];
if (ch == null || ch.Bytes == null)
continue;
if (ch.Bytes.Length > 0 && ch.Offset < ch.Bytes.Length)
- return (state != State.Body);
+ return (_state != State.Body);
}
return false;
}
@@ -180,73 +215,73 @@ namespace SocketHttpListener.Net
public int TotalDataSize
{
- get { return totalWritten; }
+ get { return _totalWritten; }
}
public int ChunkLeft
{
- get { return chunkSize - chunkRead; }
+ get { return _chunkSize - _chunkRead; }
}
- State ReadBody(byte[] buffer, ref int offset, int size)
+ private State ReadBody(byte[] buffer, ref int offset, int size)
{
- if (chunkSize == 0)
+ if (_chunkSize == 0)
return State.BodyFinished;
int diff = size - offset;
- if (diff + chunkRead > chunkSize)
- diff = chunkSize - chunkRead;
+ if (diff + _chunkRead > _chunkSize)
+ diff = _chunkSize - _chunkRead;
byte[] chunk = new byte[diff];
Buffer.BlockCopy(buffer, offset, chunk, 0, diff);
- chunks.Add(new Chunk(chunk));
+ _chunks.Add(new Chunk(chunk));
offset += diff;
- chunkRead += diff;
- totalWritten += diff;
- return (chunkRead == chunkSize) ? State.BodyFinished : State.Body;
+ _chunkRead += diff;
+ _totalWritten += diff;
+ return (_chunkRead == _chunkSize) ? State.BodyFinished : State.Body;
}
- State GetChunkSize(byte[] buffer, ref int offset, int size)
+ private State GetChunkSize(byte[] buffer, ref int offset, int size)
{
- chunkRead = 0;
- chunkSize = 0;
+ _chunkRead = 0;
+ _chunkSize = 0;
char c = '\0';
while (offset < size)
{
c = (char)buffer[offset++];
if (c == '\r')
{
- if (sawCR)
+ if (_sawCR)
ThrowProtocolViolation("2 CR found");
- sawCR = true;
+ _sawCR = true;
continue;
}
- if (sawCR && c == '\n')
+ if (_sawCR && c == '\n')
break;
if (c == ' ')
- gotit = true;
+ _gotit = true;
- if (!gotit)
- saved.Append(c);
+ if (!_gotit)
+ _saved.Append(c);
- if (saved.Length > 20)
+ if (_saved.Length > 20)
ThrowProtocolViolation("chunk size too long.");
}
- if (!sawCR || c != '\n')
+ if (!_sawCR || c != '\n')
{
if (offset < size)
ThrowProtocolViolation("Missing \\n");
try
{
- if (saved.Length > 0)
+ if (_saved.Length > 0)
{
- chunkSize = Int32.Parse(RemoveChunkExtension(saved.ToString()), NumberStyles.HexNumber);
+ _chunkSize = Int32.Parse(RemoveChunkExtension(_saved.ToString()), NumberStyles.HexNumber);
}
}
catch (Exception)
@@ -257,26 +292,26 @@ namespace SocketHttpListener.Net
return State.PartialSize;
}
- chunkRead = 0;
+ _chunkRead = 0;
try
{
- chunkSize = Int32.Parse(RemoveChunkExtension(saved.ToString()), NumberStyles.HexNumber);
+ _chunkSize = Int32.Parse(RemoveChunkExtension(_saved.ToString()), NumberStyles.HexNumber);
}
catch (Exception)
{
ThrowProtocolViolation("Cannot parse chunk size.");
}
- if (chunkSize == 0)
+ if (_chunkSize == 0)
{
- trailerState = 2;
+ _trailerState = 2;
return State.Trailer;
}
return State.Body;
}
- static string RemoveChunkExtension(string input)
+ private static string RemoveChunkExtension(string input)
{
int idx = input.IndexOf(';');
if (idx == -1)
@@ -284,30 +319,30 @@ namespace SocketHttpListener.Net
return input.Substring(0, idx);
}
- State ReadCRLF(byte[] buffer, ref int offset, int size)
+ private State ReadCRLF(byte[] buffer, ref int offset, int size)
{
- if (!sawCR)
+ if (!_sawCR)
{
if ((char)buffer[offset++] != '\r')
ThrowProtocolViolation("Expecting \\r");
- sawCR = true;
+ _sawCR = true;
if (offset == size)
return State.BodyFinished;
}
- if (sawCR && (char)buffer[offset++] != '\n')
+ if (_sawCR && (char)buffer[offset++] != '\n')
ThrowProtocolViolation("Expecting \\n");
return State.None;
}
- State ReadTrailer(byte[] buffer, ref int offset, int size)
+ private State ReadTrailer(byte[] buffer, ref int offset, int size)
{
char c = '\0';
// short path
- if (trailerState == 2 && (char)buffer[offset] == '\r' && saved.Length == 0)
+ if (_trailerState == 2 && (char)buffer[offset] == '\r' && _saved.Length == 0)
{
offset++;
if (offset < size && (char)buffer[offset] == '\n')
@@ -318,7 +353,7 @@ namespace SocketHttpListener.Net
offset--;
}
- int st = trailerState;
+ int st = _trailerState;
string stString = "\r\n\r";
while (offset < size && st < 4)
{
@@ -337,34 +372,33 @@ namespace SocketHttpListener.Net
if (st > 0)
{
- saved.Append(stString.Substring(0, saved.Length == 0 ? st - 2 : st));
+ _saved.Append(stString.Substring(0, _saved.Length == 0 ? st - 2 : st));
st = 0;
- if (saved.Length > 4196)
+ if (_saved.Length > 4196)
ThrowProtocolViolation("Error reading trailer (too long).");
}
}
if (st < 4)
{
- trailerState = st;
+ _trailerState = st;
if (offset < size)
ThrowProtocolViolation("Error reading trailer.");
return State.Trailer;
}
- StringReader reader = new StringReader(saved.ToString());
+ StringReader reader = new StringReader(_saved.ToString());
string line;
while ((line = reader.ReadLine()) != null && line != "")
- headers.Add(line);
+ _headers.Add(line);
return State.None;
}
- static void ThrowProtocolViolation(string message)
+ private static void ThrowProtocolViolation(string message)
{
- WebException we = new WebException(message, null, WebExceptionStatus.UnknownError, null);
- //WebException we = new WebException(message, null, WebExceptionStatus.ServerProtocolViolation, null);
+ WebException we = new WebException(message, null, WebExceptionStatus.ServerProtocolViolation, null);
throw we;
}
}
diff --git a/SocketHttpListener/Net/ChunkedInputStream.cs b/SocketHttpListener/Net/ChunkedInputStream.cs
new file mode 100644
index 000000000..2e0e1964b
--- /dev/null
+++ b/SocketHttpListener/Net/ChunkedInputStream.cs
@@ -0,0 +1,172 @@
+using System;
+using System.IO;
+using System.Net;
+using System.Runtime.InteropServices;
+using SocketHttpListener.Primitives;
+
+namespace SocketHttpListener.Net
+{
+ // Licensed to the .NET Foundation under one or more agreements.
+ // See the LICENSE file in the project root for more information.
+ //
+ // System.Net.ResponseStream
+ //
+ // Author:
+ // Gonzalo Paniagua Javier (gonzalo@novell.com)
+ //
+ // Copyright (c) 2005 Novell, Inc. (http://www.novell.com)
+ //
+ // Permission is hereby granted, free of charge, to any person obtaining
+ // a copy of this software and associated documentation files (the
+ // "Software"), to deal in the Software without restriction, including
+ // without limitation the rights to use, copy, modify, merge, publish,
+ // distribute, sublicense, and/or sell copies of the Software, and to
+ // permit persons to whom the Software is furnished to do so, subject to
+ // the following conditions:
+ //
+ // The above copyright notice and this permission notice shall be
+ // included in all copies or substantial portions of the Software.
+ //
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ //
+
+ internal sealed class ChunkedInputStream : HttpRequestStream
+ {
+ private ChunkStream _decoder;
+ private readonly HttpListenerContext _context;
+ private bool _no_more_data;
+
+ private class ReadBufferState
+ {
+ public byte[] Buffer;
+ public int Offset;
+ public int Count;
+ public int InitialCount;
+ public HttpStreamAsyncResult Ares;
+ public ReadBufferState(byte[] buffer, int offset, int count, HttpStreamAsyncResult ares)
+ {
+ Buffer = buffer;
+ Offset = offset;
+ Count = count;
+ InitialCount = count;
+ Ares = ares;
+ }
+ }
+
+ public ChunkedInputStream(HttpListenerContext context, Stream stream, byte[] buffer, int offset, int length)
+ : base(stream, buffer, offset, length)
+ {
+ _context = context;
+ WebHeaderCollection coll = (WebHeaderCollection)context.Request.Headers;
+ _decoder = new ChunkStream(coll);
+ }
+
+ public ChunkStream Decoder
+ {
+ get { return _decoder; }
+ set { _decoder = value; }
+ }
+
+ protected override int ReadCore(byte[] buffer, int offset, int count)
+ {
+ IAsyncResult ares = BeginReadCore(buffer, offset, count, null, null);
+ return EndRead(ares);
+ }
+
+ protected override IAsyncResult BeginReadCore(byte[] buffer, int offset, int size, AsyncCallback cback, object state)
+ {
+ HttpStreamAsyncResult ares = new HttpStreamAsyncResult(this);
+ ares._callback = cback;
+ ares._state = state;
+ if (_no_more_data || size == 0 || _closed)
+ {
+ ares.Complete();
+ return ares;
+ }
+ int nread = _decoder.Read(buffer, offset, size);
+ offset += nread;
+ size -= nread;
+ if (size == 0)
+ {
+ // got all we wanted, no need to bother the decoder yet
+ ares._count = nread;
+ ares.Complete();
+ return ares;
+ }
+ if (!_decoder.WantMore)
+ {
+ _no_more_data = nread == 0;
+ ares._count = nread;
+ ares.Complete();
+ return ares;
+ }
+ ares._buffer = new byte[8192];
+ ares._offset = 0;
+ ares._count = 8192;
+ ReadBufferState rb = new ReadBufferState(buffer, offset, size, ares);
+ rb.InitialCount += nread;
+ base.BeginReadCore(ares._buffer, ares._offset, ares._count, OnRead, rb);
+ return ares;
+ }
+
+ private void OnRead(IAsyncResult base_ares)
+ {
+ ReadBufferState rb = (ReadBufferState)base_ares.AsyncState;
+ HttpStreamAsyncResult ares = rb.Ares;
+ try
+ {
+ int nread = base.EndRead(base_ares);
+ _decoder.Write(ares._buffer, ares._offset, nread);
+ nread = _decoder.Read(rb.Buffer, rb.Offset, rb.Count);
+ rb.Offset += nread;
+ rb.Count -= nread;
+ if (rb.Count == 0 || !_decoder.WantMore || nread == 0)
+ {
+ _no_more_data = !_decoder.WantMore && nread == 0;
+ ares._count = rb.InitialCount - rb.Count;
+ ares.Complete();
+ return;
+ }
+ ares._offset = 0;
+ ares._count = Math.Min(8192, _decoder.ChunkLeft + 6);
+ base.BeginReadCore(ares._buffer, ares._offset, ares._count, OnRead, rb);
+ }
+ catch (Exception e)
+ {
+ _context.Connection.SendError(e.Message, 400);
+ ares.Complete(e);
+ }
+ }
+
+ public override int EndRead(IAsyncResult asyncResult)
+ {
+ if (asyncResult == null)
+ throw new ArgumentNullException(nameof(asyncResult));
+
+ HttpStreamAsyncResult ares = asyncResult as HttpStreamAsyncResult;
+ if (ares == null || !ReferenceEquals(this, ares._parent))
+ {
+ throw new ArgumentException("Invalid async result");
+ }
+ if (ares._endCalled)
+ {
+ throw new InvalidOperationException("Invalid end call");
+ }
+ ares._endCalled = true;
+
+ if (!asyncResult.IsCompleted)
+ asyncResult.AsyncWaitHandle.WaitOne();
+
+ if (ares._error != null)
+ throw new HttpListenerException((int)HttpStatusCode.BadRequest, "Bad Request");
+
+ return ares._count;
+ }
+ }
+}
diff --git a/SocketHttpListener.Portable/Net/CookieHelper.cs b/SocketHttpListener/Net/CookieHelper.cs
index 470507d6b..470507d6b 100644
--- a/SocketHttpListener.Portable/Net/CookieHelper.cs
+++ b/SocketHttpListener/Net/CookieHelper.cs
diff --git a/SocketHttpListener.Portable/Net/EndPointListener.cs b/SocketHttpListener/Net/EndPointListener.cs
index 2106bbec5..2106bbec5 100644
--- a/SocketHttpListener.Portable/Net/EndPointListener.cs
+++ b/SocketHttpListener/Net/EndPointListener.cs
diff --git a/SocketHttpListener.Portable/Net/EndPointManager.cs b/SocketHttpListener/Net/EndPointManager.cs
index 6a00ed360..6a00ed360 100644
--- a/SocketHttpListener.Portable/Net/EndPointManager.cs
+++ b/SocketHttpListener/Net/EndPointManager.cs
diff --git a/SocketHttpListener.Portable/Net/HttpConnection.cs b/SocketHttpListener/Net/HttpConnection.cs
index 65e7470f7..848b80f99 100644
--- a/SocketHttpListener.Portable/Net/HttpConnection.cs
+++ b/SocketHttpListener/Net/HttpConnection.cs
@@ -23,7 +23,7 @@ namespace SocketHttpListener.Net
HttpListenerContext context;
StringBuilder current_line;
ListenerPrefix prefix;
- RequestStream i_stream;
+ HttpRequestStream i_stream;
Stream o_stream;
bool chunked;
int reuses;
@@ -186,7 +186,7 @@ namespace SocketHttpListener.Net
}
}
- public RequestStream GetRequestStream(bool chunked, long contentlength)
+ public HttpRequestStream GetRequestStream(bool chunked, long contentlength)
{
if (i_stream == null)
{
@@ -203,7 +203,7 @@ namespace SocketHttpListener.Net
}
else
{
- i_stream = new RequestStream(stream, buffer, position, length - position, contentlength);
+ i_stream = new HttpRequestStream(stream, buffer, position, length - position, contentlength);
}
}
return i_stream;
@@ -216,20 +216,9 @@ namespace SocketHttpListener.Net
{
//context.Response.DetermineIfChunked();
- if (context.Response.SendChunked || isExpect100Continue || context.Request.IsWebSocketRequest || true)
- {
- var supportsDirectSocketAccess = !context.Response.SendChunked && !isExpect100Continue && !secure;
+ var supportsDirectSocketAccess = !context.Response.SendChunked && !isExpect100Continue && !secure;
- o_stream = new ResponseStream(stream, context.Response, _memoryStreamFactory, _textEncoding, _fileSystem, sock, supportsDirectSocketAccess, _logger, _environment);
- }
- else
- {
- o_stream = stream;
- using (var headerStream = ResponseStream.GetHeaders(context.Response, _memoryStreamFactory, false))
- {
- headerStream.CopyTo(o_stream);
- }
- }
+ o_stream = new ResponseStream(stream, context.Response, _memoryStreamFactory, _textEncoding, _fileSystem, sock, supportsDirectSocketAccess, _logger, _environment);
}
return o_stream;
}
diff --git a/SocketHttpListener.Portable/Net/HttpListener.cs b/SocketHttpListener/Net/HttpListener.cs
index b3e01425c..b3e01425c 100644
--- a/SocketHttpListener.Portable/Net/HttpListener.cs
+++ b/SocketHttpListener/Net/HttpListener.cs
diff --git a/SocketHttpListener.Portable/Net/HttpListenerBasicIdentity.cs b/SocketHttpListener/Net/HttpListenerBasicIdentity.cs
index faa26693d..faa26693d 100644
--- a/SocketHttpListener.Portable/Net/HttpListenerBasicIdentity.cs
+++ b/SocketHttpListener/Net/HttpListenerBasicIdentity.cs
diff --git a/SocketHttpListener.Portable/Net/HttpListenerContext.cs b/SocketHttpListener/Net/HttpListenerContext.cs
index 58d769f22..58d769f22 100644
--- a/SocketHttpListener.Portable/Net/HttpListenerContext.cs
+++ b/SocketHttpListener/Net/HttpListenerContext.cs
diff --git a/SocketHttpListener.Portable/Net/HttpListenerPrefixCollection.cs b/SocketHttpListener/Net/HttpListenerPrefixCollection.cs
index 0b05539ee..0b05539ee 100644
--- a/SocketHttpListener.Portable/Net/HttpListenerPrefixCollection.cs
+++ b/SocketHttpListener/Net/HttpListenerPrefixCollection.cs
diff --git a/SocketHttpListener.Portable/Net/HttpListenerRequest.cs b/SocketHttpListener/Net/HttpListenerRequest.cs
index cfbd49203..cfbd49203 100644
--- a/SocketHttpListener.Portable/Net/HttpListenerRequest.cs
+++ b/SocketHttpListener/Net/HttpListenerRequest.cs
diff --git a/SocketHttpListener.Portable/Net/HttpListenerResponse.cs b/SocketHttpListener/Net/HttpListenerResponse.cs
index 3cb6a0d75..3cb6a0d75 100644
--- a/SocketHttpListener.Portable/Net/HttpListenerResponse.cs
+++ b/SocketHttpListener/Net/HttpListenerResponse.cs
diff --git a/SocketHttpListener/Net/HttpRequestStream.Managed.cs b/SocketHttpListener/Net/HttpRequestStream.Managed.cs
new file mode 100644
index 000000000..cb02a4d5a
--- /dev/null
+++ b/SocketHttpListener/Net/HttpRequestStream.Managed.cs
@@ -0,0 +1,196 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.ExceptionServices;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SocketHttpListener.Net
+{
+ // Licensed to the .NET Foundation under one or more agreements.
+ // See the LICENSE file in the project root for more information.
+ //
+ // System.Net.ResponseStream
+ //
+ // Author:
+ // Gonzalo Paniagua Javier (gonzalo@novell.com)
+ //
+ // Copyright (c) 2005 Novell, Inc. (http://www.novell.com)
+ //
+ // Permission is hereby granted, free of charge, to any person obtaining
+ // a copy of this software and associated documentation files (the
+ // "Software"), to deal in the Software without restriction, including
+ // without limitation the rights to use, copy, modify, merge, publish,
+ // distribute, sublicense, and/or sell copies of the Software, and to
+ // permit persons to whom the Software is furnished to do so, subject to
+ // the following conditions:
+ //
+ // The above copyright notice and this permission notice shall be
+ // included in all copies or substantial portions of the Software.
+ //
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ //
+
+ internal partial class HttpRequestStream : Stream
+ {
+ private byte[] _buffer;
+ private int _offset;
+ private int _length;
+ private long _remainingBody;
+ protected bool _closed;
+ private Stream _stream;
+
+ internal HttpRequestStream(Stream stream, byte[] buffer, int offset, int length)
+ : this(stream, buffer, offset, length, -1)
+ {
+ }
+
+ internal HttpRequestStream(Stream stream, byte[] buffer, int offset, int length, long contentlength)
+ {
+ _stream = stream;
+ _buffer = buffer;
+ _offset = offset;
+ _length = length;
+ _remainingBody = contentlength;
+ }
+
+ // Returns 0 if we can keep reading from the base stream,
+ // > 0 if we read something from the buffer.
+ // -1 if we had a content length set and we finished reading that many bytes.
+ private int FillFromBuffer(byte[] buffer, int offset, int count)
+ {
+ if (_remainingBody == 0)
+ return -1;
+
+ if (_length == 0)
+ return 0;
+
+ int size = Math.Min(_length, count);
+ if (_remainingBody > 0)
+ size = (int)Math.Min(size, _remainingBody);
+
+ if (_offset > _buffer.Length - size)
+ {
+ size = Math.Min(size, _buffer.Length - _offset);
+ }
+ if (size == 0)
+ return 0;
+
+ Buffer.BlockCopy(_buffer, _offset, buffer, offset, size);
+ _offset += size;
+ _length -= size;
+ if (_remainingBody > 0)
+ _remainingBody -= size;
+ return size;
+ }
+
+ protected virtual int ReadCore(byte[] buffer, int offset, int size)
+ {
+ // Call FillFromBuffer to check for buffer boundaries even when remaining_body is 0
+ int nread = FillFromBuffer(buffer, offset, size);
+ if (nread == -1)
+ { // No more bytes available (Content-Length)
+ return 0;
+ }
+ else if (nread > 0)
+ {
+ return nread;
+ }
+
+ nread = _stream.Read(buffer, offset, size);
+ if (nread > 0 && _remainingBody > 0)
+ _remainingBody -= nread;
+ return nread;
+ }
+
+ protected virtual IAsyncResult BeginReadCore(byte[] buffer, int offset, int size, AsyncCallback cback, object state)
+ {
+ if (size == 0 || _closed)
+ {
+ HttpStreamAsyncResult ares = new HttpStreamAsyncResult(this);
+ ares._callback = cback;
+ ares._state = state;
+ ares.Complete();
+ return ares;
+ }
+
+ int nread = FillFromBuffer(buffer, offset, size);
+ if (nread > 0 || nread == -1)
+ {
+ HttpStreamAsyncResult ares = new HttpStreamAsyncResult(this);
+ ares._buffer = buffer;
+ ares._offset = offset;
+ ares._count = size;
+ ares._callback = cback;
+ ares._state = state;
+ ares._synchRead = Math.Max(0, nread);
+ ares.Complete();
+ return ares;
+ }
+
+ // Avoid reading past the end of the request to allow
+ // for HTTP pipelining
+ if (_remainingBody >= 0 && size > _remainingBody)
+ {
+ size = (int)Math.Min(int.MaxValue, _remainingBody);
+ }
+
+ return _stream.BeginRead(buffer, offset, size, cback, state);
+ }
+
+ public override int EndRead(IAsyncResult asyncResult)
+ {
+ if (asyncResult == null)
+ throw new ArgumentNullException(nameof(asyncResult));
+
+ var r = asyncResult as HttpStreamAsyncResult;
+
+ if (r != null)
+ {
+ if (!ReferenceEquals(this, r._parent))
+ {
+ throw new ArgumentException("Invalid async result");
+ }
+ if (r._endCalled)
+ {
+ throw new InvalidOperationException("Invalid end call");
+ }
+ r._endCalled = true;
+
+ if (!asyncResult.IsCompleted)
+ {
+ asyncResult.AsyncWaitHandle.WaitOne();
+ }
+
+ return r._synchRead;
+ }
+
+ if (_closed)
+ return 0;
+
+ int nread = 0;
+ try
+ {
+ nread = _stream.EndRead(asyncResult);
+ }
+ catch (IOException e) when (e.InnerException is ArgumentException || e.InnerException is InvalidOperationException)
+ {
+ throw e.InnerException;
+ }
+
+ if (_remainingBody > 0 && nread > 0)
+ {
+ _remainingBody -= nread;
+ }
+
+ return nread;
+ }
+ }
+}
diff --git a/SocketHttpListener/Net/HttpRequestStream.cs b/SocketHttpListener/Net/HttpRequestStream.cs
new file mode 100644
index 000000000..c54da44a1
--- /dev/null
+++ b/SocketHttpListener/Net/HttpRequestStream.cs
@@ -0,0 +1,144 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace SocketHttpListener.Net
+{
+ // Licensed to the .NET Foundation under one or more agreements.
+ // See the LICENSE file in the project root for more information.
+ //
+ // System.Net.ResponseStream
+ //
+ // Author:
+ // Gonzalo Paniagua Javier (gonzalo@novell.com)
+ //
+ // Copyright (c) 2005 Novell, Inc. (http://www.novell.com)
+ //
+ // Permission is hereby granted, free of charge, to any person obtaining
+ // a copy of this software and associated documentation files (the
+ // "Software"), to deal in the Software without restriction, including
+ // without limitation the rights to use, copy, modify, merge, publish,
+ // distribute, sublicense, and/or sell copies of the Software, and to
+ // permit persons to whom the Software is furnished to do so, subject to
+ // the following conditions:
+ //
+ // The above copyright notice and this permission notice shall be
+ // included in all copies or substantial portions of the Software.
+ //
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ //
+
+ internal partial class HttpRequestStream : Stream
+ {
+ public override bool CanSeek => false;
+ public override bool CanWrite => false;
+ public override bool CanRead => true;
+
+ public override int Read(byte[] buffer, int offset, int size)
+ {
+ if (buffer == null)
+ {
+ throw new ArgumentNullException(nameof(buffer));
+ }
+ if (offset < 0 || offset > buffer.Length)
+ {
+ throw new ArgumentOutOfRangeException(nameof(offset));
+ }
+ if (size < 0 || size > buffer.Length - offset)
+ {
+ throw new ArgumentOutOfRangeException(nameof(size));
+ }
+ if (size == 0 || _closed)
+ {
+ return 0;
+ }
+
+ return ReadCore(buffer, offset, size);
+ }
+
+ public override IAsyncResult BeginRead(byte[] buffer, int offset, int size, AsyncCallback callback, object state)
+ {
+ if (buffer == null)
+ {
+ throw new ArgumentNullException(nameof(buffer));
+ }
+ if (offset < 0 || offset > buffer.Length)
+ {
+ throw new ArgumentOutOfRangeException(nameof(offset));
+ }
+ if (size < 0 || size > buffer.Length - offset)
+ {
+ throw new ArgumentOutOfRangeException(nameof(size));
+ }
+
+ return BeginReadCore(buffer, offset, size, callback, state);
+ }
+
+ public override void Flush() { }
+ public override Task FlushAsync(CancellationToken cancellationToken) => Task.CompletedTask;
+
+ public override long Length
+ {
+ get
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ public override long Position
+ {
+ get
+ {
+ throw new NotImplementedException();
+ }
+
+ set
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ public override long Seek(long offset, SeekOrigin origin)
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void SetLength(long value)
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void Write(byte[] buffer, int offset, int count)
+ {
+ throw new NotImplementedException();
+ }
+
+ public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
+ {
+ return base.BeginWrite(buffer, offset, count, callback, state);
+ }
+
+ public override void EndWrite(IAsyncResult asyncResult)
+ {
+ base.EndWrite(asyncResult);
+ }
+
+ internal bool Closed => _closed;
+
+ protected override void Dispose(bool disposing)
+ {
+ _closed = true;
+ base.Dispose(disposing);
+ }
+ }
+}
diff --git a/SocketHttpListener.Portable/Net/HttpStatusCode.cs b/SocketHttpListener/Net/HttpStatusCode.cs
index 93da82ba0..93da82ba0 100644
--- a/SocketHttpListener.Portable/Net/HttpStatusCode.cs
+++ b/SocketHttpListener/Net/HttpStatusCode.cs
diff --git a/SocketHttpListener/Net/HttpStreamAsyncResult.cs b/SocketHttpListener/Net/HttpStreamAsyncResult.cs
new file mode 100644
index 000000000..e7e516c6b
--- /dev/null
+++ b/SocketHttpListener/Net/HttpStreamAsyncResult.cs
@@ -0,0 +1,85 @@
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace SocketHttpListener.Net
+{
+ internal class HttpStreamAsyncResult : IAsyncResult
+ {
+ private object _locker = new object();
+ private ManualResetEvent _handle;
+ private bool _completed;
+
+ internal readonly object _parent;
+ internal byte[] _buffer;
+ internal int _offset;
+ internal int _count;
+ internal AsyncCallback _callback;
+ internal object _state;
+ internal int _synchRead;
+ internal Exception _error;
+ internal bool _endCalled;
+
+ internal HttpStreamAsyncResult(object parent)
+ {
+ _parent = parent;
+ }
+
+ public void Complete(Exception e)
+ {
+ _error = e;
+ Complete();
+ }
+
+ public void Complete()
+ {
+ lock (_locker)
+ {
+ if (_completed)
+ return;
+
+ _completed = true;
+ if (_handle != null)
+ _handle.Set();
+
+ if (_callback != null)
+ Task.Run(() => _callback(this));
+ }
+ }
+
+ public object AsyncState
+ {
+ get { return _state; }
+ }
+
+ public WaitHandle AsyncWaitHandle
+ {
+ get
+ {
+ lock (_locker)
+ {
+ if (_handle == null)
+ _handle = new ManualResetEvent(_completed);
+ }
+
+ return _handle;
+ }
+ }
+
+ public bool CompletedSynchronously
+ {
+ get { return (_synchRead == _count); }
+ }
+
+ public bool IsCompleted
+ {
+ get
+ {
+ lock (_locker)
+ {
+ return _completed;
+ }
+ }
+ }
+ }
+}
diff --git a/SocketHttpListener.Portable/Net/HttpVersion.cs b/SocketHttpListener/Net/HttpVersion.cs
index c0839b46d..c0839b46d 100644
--- a/SocketHttpListener.Portable/Net/HttpVersion.cs
+++ b/SocketHttpListener/Net/HttpVersion.cs
diff --git a/SocketHttpListener.Portable/Net/ListenerPrefix.cs b/SocketHttpListener/Net/ListenerPrefix.cs
index 2c314da50..2c314da50 100644
--- a/SocketHttpListener.Portable/Net/ListenerPrefix.cs
+++ b/SocketHttpListener/Net/ListenerPrefix.cs
diff --git a/SocketHttpListener.Portable/Net/ResponseStream.cs b/SocketHttpListener/Net/ResponseStream.cs
index b2d0d4e9c..5949e3817 100644
--- a/SocketHttpListener.Portable/Net/ResponseStream.cs
+++ b/SocketHttpListener/Net/ResponseStream.cs
@@ -304,7 +304,7 @@ namespace SocketHttpListener.Net
private async Task TransmitFileManaged(string path, long offset, long count, FileShareMode fileShareMode, CancellationToken cancellationToken)
{
- var allowAsync = _environment.OperatingSystem != OperatingSystem.Windows;
+ var allowAsync = _environment.OperatingSystem != MediaBrowser.Model.System.OperatingSystem.Windows;
var fileOpenOptions = offset > 0
? FileOpenOptions.RandomAccess
diff --git a/SocketHttpListener.Portable/Net/WebHeaderCollection.cs b/SocketHttpListener/Net/WebHeaderCollection.cs
index d20f99b9b..d20f99b9b 100644
--- a/SocketHttpListener.Portable/Net/WebHeaderCollection.cs
+++ b/SocketHttpListener/Net/WebHeaderCollection.cs
diff --git a/SocketHttpListener.Portable/Net/WebSockets/HttpListenerWebSocketContext.cs b/SocketHttpListener/Net/WebSockets/HttpListenerWebSocketContext.cs
index 034ac17d2..034ac17d2 100644
--- a/SocketHttpListener.Portable/Net/WebSockets/HttpListenerWebSocketContext.cs
+++ b/SocketHttpListener/Net/WebSockets/HttpListenerWebSocketContext.cs
diff --git a/SocketHttpListener.Portable/Net/WebSockets/WebSocketContext.cs b/SocketHttpListener/Net/WebSockets/WebSocketContext.cs
index 3ffa6e639..3ffa6e639 100644
--- a/SocketHttpListener.Portable/Net/WebSockets/WebSocketContext.cs
+++ b/SocketHttpListener/Net/WebSockets/WebSocketContext.cs
diff --git a/SocketHttpListener.Portable/Opcode.cs b/SocketHttpListener/Opcode.cs
index 62b7d8585..62b7d8585 100644
--- a/SocketHttpListener.Portable/Opcode.cs
+++ b/SocketHttpListener/Opcode.cs
diff --git a/SocketHttpListener.Portable/PayloadData.cs b/SocketHttpListener/PayloadData.cs
index a6318da2b..a6318da2b 100644
--- a/SocketHttpListener.Portable/PayloadData.cs
+++ b/SocketHttpListener/PayloadData.cs
diff --git a/SocketHttpListener.Portable/Primitives/ICertificate.cs b/SocketHttpListener/Primitives/ICertificate.cs
index 1289da13d..1289da13d 100644
--- a/SocketHttpListener.Portable/Primitives/ICertificate.cs
+++ b/SocketHttpListener/Primitives/ICertificate.cs
diff --git a/SocketHttpListener.Portable/Primitives/IStreamFactory.cs b/SocketHttpListener/Primitives/IStreamFactory.cs
index 57e21e31b..57e21e31b 100644
--- a/SocketHttpListener.Portable/Primitives/IStreamFactory.cs
+++ b/SocketHttpListener/Primitives/IStreamFactory.cs
diff --git a/SocketHttpListener.Portable/Primitives/ITextEncoding.cs b/SocketHttpListener/Primitives/ITextEncoding.cs
index b10145687..b10145687 100644
--- a/SocketHttpListener.Portable/Primitives/ITextEncoding.cs
+++ b/SocketHttpListener/Primitives/ITextEncoding.cs
diff --git a/MediaBrowser.Server.Startup.Common/Properties/AssemblyInfo.cs b/SocketHttpListener/Properties/AssemblyInfo.cs
index c8e037804..8876cea4f 100644
--- a/MediaBrowser.Server.Startup.Common/Properties/AssemblyInfo.cs
+++ b/SocketHttpListener/Properties/AssemblyInfo.cs
@@ -1,15 +1,16 @@
using System.Reflection;
+using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
-[assembly: AssemblyTitle("MediaBrowser.Server.Startup.Common")]
+[assembly: AssemblyTitle("SocketHttpListener")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("MediaBrowser.Server.Startup.Common")]
-[assembly: AssemblyCopyright("Copyright © 2014")]
+[assembly: AssemblyProduct("SocketHttpListener")]
+[assembly: AssemblyCopyright("Copyright © 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@@ -19,7 +20,7 @@ using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("fcc1d690-3a86-4c4b-baef-439c53e1547a")]
+[assembly: Guid("1d74413b-e7cf-455b-b021-f52bdf881542")]
// Version information for an assembly consists of the following four values:
//
@@ -27,4 +28,7 @@ using System.Runtime.InteropServices;
// Minor Version
// Build Number
// Revision
-// \ No newline at end of file
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
diff --git a/SocketHttpListener.Portable/Rsv.cs b/SocketHttpListener/Rsv.cs
index 668059b8a..668059b8a 100644
--- a/SocketHttpListener.Portable/Rsv.cs
+++ b/SocketHttpListener/Rsv.cs
diff --git a/SocketHttpListener.Portable/SocketHttpListener.Portable.csproj b/SocketHttpListener/SocketHttpListener.csproj
index ee902462b..dd2d2cf0f 100644
--- a/SocketHttpListener.Portable/SocketHttpListener.Portable.csproj
+++ b/SocketHttpListener/SocketHttpListener.csproj
@@ -2,19 +2,16 @@
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
- <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProjectGuid>{4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}</ProjectGuid>
+ <ProjectGuid>{1D74413B-E7CF-455B-B021-F52BDF881542}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>SocketHttpListener.Portable</RootNamespace>
- <AssemblyName>SocketHttpListener.Portable</AssemblyName>
- <DefaultLanguage>en-US</DefaultLanguage>
+ <RootNamespace>SocketHttpListener</RootNamespace>
+ <AssemblyName>SocketHttpListener</AssemblyName>
+ <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
- <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
- <TargetFrameworkProfile>Profile7</TargetFrameworkProfile>
- <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -34,6 +31,19 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="..\SharedVersion.cs">
+ <Link>Properties\SharedVersion.cs</Link>
+ </Compile>
<Compile Include="ByteOrder.cs" />
<Compile Include="CloseEventArgs.cs" />
<Compile Include="CloseStatusCode.cs" />
@@ -58,18 +68,18 @@
<Compile Include="Net\HttpListenerPrefixCollection.cs" />
<Compile Include="Net\HttpListenerRequest.cs" />
<Compile Include="Net\HttpListenerResponse.cs" />
+ <Compile Include="Net\HttpRequestStream.cs" />
+ <Compile Include="Net\HttpRequestStream.Managed.cs" />
<Compile Include="Net\HttpStatusCode.cs" />
<Compile Include="Net\HttpStreamAsyncResult.cs" />
<Compile Include="Net\HttpVersion.cs" />
<Compile Include="Net\ListenerPrefix.cs" />
- <Compile Include="Net\RequestStream.cs" />
<Compile Include="Net\ResponseStream.cs" />
<Compile Include="Net\WebHeaderCollection.cs" />
<Compile Include="Net\WebSockets\HttpListenerWebSocketContext.cs" />
<Compile Include="Net\WebSockets\WebSocketContext.cs" />
<Compile Include="Opcode.cs" />
<Compile Include="PayloadData.cs" />
- <Compile Include="Primitives\HttpListenerException.cs" />
<Compile Include="Primitives\ICertificate.cs" />
<Compile Include="Primitives\IStreamFactory.cs" />
<Compile Include="Primitives\ITextEncoding.cs" />
@@ -81,9 +91,6 @@
<Compile Include="WebSocketState.cs" />
</ItemGroup>
<ItemGroup>
- <None Include="packages.config" />
- </ItemGroup>
- <ItemGroup>
<ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
<Project>{9142eefa-7570-41e1-bfcc-468bb571af2f}</Project>
<Name>MediaBrowser.Common</Name>
@@ -93,11 +100,7 @@
<Name>MediaBrowser.Model</Name>
</ProjectReference>
</ItemGroup>
- <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
- <PropertyGroup>
- <PostBuildEvent>
- </PostBuildEvent>
- </PropertyGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
diff --git a/SocketHttpListener.Portable/WebSocket.cs b/SocketHttpListener/WebSocket.cs
index 9966d3fcf..9966d3fcf 100644
--- a/SocketHttpListener.Portable/WebSocket.cs
+++ b/SocketHttpListener/WebSocket.cs
diff --git a/SocketHttpListener.Portable/WebSocketException.cs b/SocketHttpListener/WebSocketException.cs
index 260721317..260721317 100644
--- a/SocketHttpListener.Portable/WebSocketException.cs
+++ b/SocketHttpListener/WebSocketException.cs
diff --git a/SocketHttpListener.Portable/WebSocketFrame.cs b/SocketHttpListener/WebSocketFrame.cs
index 44fa4a5dc..44fa4a5dc 100644
--- a/SocketHttpListener.Portable/WebSocketFrame.cs
+++ b/SocketHttpListener/WebSocketFrame.cs
diff --git a/SocketHttpListener.Portable/WebSocketState.cs b/SocketHttpListener/WebSocketState.cs
index 73b3a49dd..73b3a49dd 100644
--- a/SocketHttpListener.Portable/WebSocketState.cs
+++ b/SocketHttpListener/WebSocketState.cs