Skip to content
This repository was archived by the owner on Jul 9, 2023. It is now read-only.

Commit 2993a6f

Browse files
authored
Merge pull request #669 from justcoding121/master
net4.5 support is back
2 parents 3b807da + 4562e13 commit 2993a6f

File tree

10 files changed

+90
-18
lines changed

10 files changed

+90
-18
lines changed

src/Titanium.Web.Proxy/EventArguments/SessionEventArgs.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,7 +589,11 @@ public void Redirect(string url, bool closeServerConnection = false)
589589
var response = new RedirectResponse();
590590
response.HttpVersion = HttpClient.Request.HttpVersion;
591591
response.Headers.AddHeader(KnownHeaders.Location, url);
592+
#if NET45
593+
response.Body = Net45Compatibility.EmptyArray;
594+
#else
592595
response.Body = Array.Empty<byte>();
596+
#endif
593597

594598
Respond(response, closeServerConnection);
595599
}

src/Titanium.Web.Proxy/Helpers/RunTime.cs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.Reflection;
33
using System.Text;
44
using System.Runtime.InteropServices;
@@ -13,6 +13,25 @@ public static class RunTime
1313
{
1414
private static readonly Lazy<bool> isRunningOnMono = new Lazy<bool>(() => Type.GetType("Mono.Runtime") != null);
1515

16+
#if NET45
17+
/// <summary>
18+
/// cache for Windows platform check
19+
/// </summary>
20+
/// <returns></returns>
21+
private static bool isRunningOnWindows => true;
22+
23+
/// <summary>
24+
/// cache for mono runtime check
25+
/// </summary>
26+
/// <returns></returns>
27+
private static bool isRunningOnLinux => false;
28+
29+
/// <summary>
30+
/// cache for mac runtime check
31+
/// </summary>
32+
/// <returns></returns>
33+
private static bool isRunningOnMac => false;
34+
#else
1635
/// <summary>
1736
/// cache for Windows platform check
1837
/// </summary>
@@ -30,7 +49,8 @@ public static class RunTime
3049
/// </summary>
3150
/// <returns></returns>
3251
private static bool isRunningOnMac => RuntimeInformation.IsOSPlatform(OSPlatform.OSX);
33-
52+
#endif
53+
3454
/// <summary>
3555
/// Is running on Mono?
3656
/// </summary>

src/Titanium.Web.Proxy/Http/HeaderBuilder.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,14 +85,22 @@ public void Write(string str)
8585

8686
public ArraySegment<byte> GetBuffer()
8787
{
88+
#if NET45
89+
return new ArraySegment<byte>(stream.ToArray());
90+
#else
8891
stream.TryGetBuffer(out var buffer);
8992
return buffer;
93+
#endif
9094
}
9195

9296
public string GetString(Encoding encoding)
9397
{
98+
#if NET45
99+
return encoding.GetString(stream.ToArray());
100+
#else
94101
stream.TryGetBuffer(out var buffer);
95102
return encoding.GetString(buffer.Array, buffer.Offset, buffer.Count);
103+
#endif
96104
}
97105
}
98106
}

src/Titanium.Web.Proxy/Http2/Hpack/Decoder.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,11 @@ public void Decode(BinaryReader input, IHeaderListener headerListener)
258258
if (nameLength + HttpHeader.HttpHeaderOverhead > dynamicTable.Capacity)
259259
{
260260
dynamicTable.Clear();
261+
#if NET45
262+
name = Net45Compatibility.EmptyArray;
263+
#else
261264
name = Array.Empty<byte>();
265+
#endif
262266
skipLength = nameLength;
263267
state = State.SkipLiteralHeaderName;
264268
break;
@@ -375,7 +379,11 @@ public void Decode(BinaryReader input, IHeaderListener headerListener)
375379

376380
if (valueLength == 0)
377381
{
378-
InsertHeader(headerListener, name, Array.Empty<byte>(), indexType);
382+
#if NET45
383+
InsertHeader(headerListener, name, Net45Compatibility.EmptyArray, indexType);
384+
#else
385+
name = Array.Empty<byte>();
386+
#endif
379387
state = State.ReadHeaderRepresentation;
380388
}
381389
else

src/Titanium.Web.Proxy/Http2/Hpack/DynamicTable.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ namespace Titanium.Web.Proxy.Http2.Hpack
2323
public class DynamicTable
2424
{
2525
// a circular queue of header fields
26+
#if NET45
27+
HttpHeader[] headerFields = new HttpHeader[0];
28+
#else
2629
HttpHeader[] headerFields = Array.Empty<HttpHeader>();
30+
#endif
2731
int head;
2832
int tail;
2933

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#if NET45
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
8+
namespace Titanium.Web.Proxy
9+
{
10+
class Net45Compatibility
11+
{
12+
public static byte[] EmptyArray = new byte[0];
13+
}
14+
}
15+
#endif

src/Titanium.Web.Proxy/Network/Tcp/TcpConnectionFactory.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,11 @@ private async Task<TcpServerConnection> createServerConnection(string remoteHost
355355
{
356356
// dispose the current TcpClient and try the next address
357357
lastException = e;
358+
#if NET45
359+
tcpClient?.Close();
360+
#else
358361
tcpClient?.Dispose();
362+
#endif
359363
tcpClient = null;
360364
}
361365
}

src/Titanium.Web.Proxy/RequestHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ private async Task handleHttpSessionRequest(ProxyEndPoint endPoint, TcpClientCon
5151
// Loop through each subsequent request on this particular client connection
5252
// (assuming HTTP connection is kept alive by client)
5353
while (true)
54-
{
54+
{
5555
if (clientStream.IsClosed)
5656
{
5757
return;

src/Titanium.Web.Proxy/Titanium.Web.Proxy.csproj

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>netstandard2.0;netstandard2.1</TargetFrameworks>
4+
<TargetFrameworks>net45;net461;netstandard2.0;netstandard2.1</TargetFrameworks>
55
<RootNamespace>Titanium.Web.Proxy</RootNamespace>
66
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
77
<SignAssembly>True</SignAssembly>
@@ -15,21 +15,15 @@
1515
<ItemGroup>
1616
<PackageReference Include="BrotliSharpLib" Version="0.3.3" />
1717
<PackageReference Include="Portable.BouncyCastle" Version="1.8.5.2" />
18+
</ItemGroup>
19+
20+
<ItemGroup Condition="'$(TargetFramework)' != 'netstandard2.1'">
1821
<PackageReference Include="System.Buffers" Version="4.5.0" />
1922
<PackageReference Include="System.Memory" Version="4.5.3" />
2023
<PackageReference Include="System.Threading.Tasks.Extensions" Version="4.5.3" />
2124
</ItemGroup>
2225

23-
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
24-
<PackageReference Include="Microsoft.Win32.Registry">
25-
<Version>4.6.0</Version>
26-
</PackageReference>
27-
<PackageReference Include="System.Security.Principal.Windows">
28-
<Version>4.6.0</Version>
29-
</PackageReference>
30-
</ItemGroup>
31-
32-
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.1'">
26+
<ItemGroup Condition="'$(TargetFramework)' != 'net45'">
3327
<PackageReference Include="Microsoft.Win32.Registry">
3428
<Version>4.6.0</Version>
3529
</PackageReference>

src/Titanium.Web.Proxy/Titanium.Web.Proxy.nuspec

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,42 @@
1414
<copyright>Copyright &#x00A9; Titanium. All rights reserved.</copyright>
1515
<tags></tags>
1616
<dependencies>
17-
<group targetFramework="netstandard2.0">
17+
<group targetFramework="net45">
18+
<dependency id="BrotliSharpLib" version="0.3.3" />
1819
<dependency id="Portable.BouncyCastle" version="1.8.5.2" />
20+
<dependency id="System.Buffers" version="4.5.0" />
21+
<dependency id="System.Memory" version="4.5.3" />
22+
<dependency id="System.Threading.Tasks.Extensions" version="4.5.3" />
23+
</group>
24+
<group targetFramework="net461">
1925
<dependency id="BrotliSharpLib" version="0.3.3" />
26+
<dependency id="Portable.BouncyCastle" version="1.8.5.2" />
2027
<dependency id="Microsoft.Win32.Registry" version="4.6.0" />
2128
<dependency id="System.Buffers" version="4.5.0" />
2229
<dependency id="System.Memory" version="4.5.3" />
2330
<dependency id="System.Threading.Tasks.Extensions" version="4.5.3" />
2431
<dependency id="System.Security.Principal.Windows" version="4.6.0" />
2532
</group>
26-
<group targetFramework="netstandard2.1">
27-
<dependency id="Portable.BouncyCastle" version="1.8.5.2" />
33+
<group targetFramework="netstandard2.0">
2834
<dependency id="BrotliSharpLib" version="0.3.3" />
35+
<dependency id="Portable.BouncyCastle" version="1.8.5.2" />
2936
<dependency id="Microsoft.Win32.Registry" version="4.6.0" />
3037
<dependency id="System.Buffers" version="4.5.0" />
3138
<dependency id="System.Memory" version="4.5.3" />
3239
<dependency id="System.Threading.Tasks.Extensions" version="4.5.3" />
3340
<dependency id="System.Security.Principal.Windows" version="4.6.0" />
3441
</group>
42+
<group targetFramework="netstandard2.1">
43+
<dependency id="BrotliSharpLib" version="0.3.3" />
44+
<dependency id="Portable.BouncyCastle" version="1.8.5.2" />
45+
<dependency id="Microsoft.Win32.Registry" version="4.6.0" />
46+
<dependency id="System.Security.Principal.Windows" version="4.6.0" />
47+
</group>
3548
</dependencies>
3649
</metadata>
3750
<files>
51+
<file src="bin\$configuration$\net45\Titanium.Web.Proxy.dll" target="lib\net45" />
52+
<file src="bin\$configuration$\net461\Titanium.Web.Proxy.dll" target="lib\net461" />
3853
<file src="bin\$configuration$\netstandard2.0\Titanium.Web.Proxy.dll" target="lib\netstandard2.0" />
3954
<file src="bin\$configuration$\netstandard2.1\Titanium.Web.Proxy.dll" target="lib\netstandard2.1" />
4055
</files>

0 commit comments

Comments
 (0)