Commit 4febcb05 authored by Honfika's avatar Honfika

less exceptions

parent 4f43bd16
...@@ -26,7 +26,7 @@ namespace Titanium.Web.Proxy.Examples.Basic ...@@ -26,7 +26,7 @@ namespace Titanium.Web.Proxy.Examples.Basic
{ {
proxyServer = new ProxyServer(); proxyServer = new ProxyServer();
proxyServer.EnableHttp2 = true; //proxyServer.EnableHttp2 = true;
// generate root certificate without storing it in file system // generate root certificate without storing it in file system
//proxyServer.CertificateManager.CreateRootCertificate(false); //proxyServer.CertificateManager.CreateRootCertificate(false);
......
...@@ -141,26 +141,29 @@ namespace Titanium.Web.Proxy ...@@ -141,26 +141,29 @@ namespace Titanium.Web.Proxy
bool http2Supported = false; bool http2Supported = false;
var alpn = clientHelloInfo.GetAlpn(); if (EnableHttp2)
if (alpn != null && alpn.Contains(SslApplicationProtocol.Http2))
{ {
// test server HTTP/2 support var alpn = clientHelloInfo.GetAlpn();
try if (alpn != null && alpn.Contains(SslApplicationProtocol.Http2))
{
// todo: this is a hack, because Titanium does not support HTTP protocol changing currently
var connection = await tcpConnectionFactory.GetServerConnection(this, connectArgs,
true, SslExtensions.Http2ProtocolAsList,
true, cancellationToken);
http2Supported = connection.NegotiatedApplicationProtocol ==
SslApplicationProtocol.Http2;
// release connection back to pool instead of closing when connection pool is enabled.
await tcpConnectionFactory.Release(connection, true);
}
catch (Exception)
{ {
// ignore // test server HTTP/2 support
try
{
// todo: this is a hack, because Titanium does not support HTTP protocol changing currently
var connection = await tcpConnectionFactory.GetServerConnection(this, connectArgs,
true, SslExtensions.Http2ProtocolAsList,
true, cancellationToken);
http2Supported = connection.NegotiatedApplicationProtocol ==
SslApplicationProtocol.Http2;
// release connection back to pool instead of closing when connection pool is enabled.
await tcpConnectionFactory.Release(connection, true);
}
catch (Exception)
{
// ignore
}
} }
} }
...@@ -274,7 +277,7 @@ namespace Titanium.Web.Proxy ...@@ -274,7 +277,7 @@ namespace Titanium.Web.Proxy
// If we detected that client tunnel CONNECTs without SSL by checking for empty client hello then // If we detected that client tunnel CONNECTs without SSL by checking for empty client hello then
// this connection should not be HTTPS. // this connection should not be HTTPS.
var connection = await tcpConnectionFactory.GetServerConnection(this, connectArgs, var connection = await tcpConnectionFactory.GetServerConnection(this, connectArgs,
true, SslExtensions.Http2ProtocolAsList, true, null,
true, cancellationToken); true, cancellationToken);
try try
......
...@@ -2,33 +2,33 @@ ...@@ -2,33 +2,33 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using Titanium.Web.Proxy.StreamExtended.Network; using Titanium.Web.Proxy.StreamExtended.Network;
internal class NullWriter : IHttpStreamWriter namespace Titanium.Web.Proxy.Helpers
{ {
public static NullWriter Instance { get; } = new NullWriter(); internal class NullWriter : IHttpStreamWriter
public void Write(byte[] buffer, int offset, int count)
{ {
} public static NullWriter Instance { get; } = new NullWriter();
#if NET45 public void Write(byte[] buffer, int offset, int count)
public async Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) {
{ }
}
public Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
{
#if NET45
return Net45Compatibility.CompletedTask;
#else #else
public Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) return Task.CompletedTask;
{
return Task.CompletedTask;
}
#endif #endif
}
public ValueTask WriteLineAsync(CancellationToken cancellationToken = default) public ValueTask WriteLineAsync(CancellationToken cancellationToken = default)
{ {
throw new System.NotImplementedException(); throw new System.NotImplementedException();
} }
public ValueTask WriteLineAsync(string value, CancellationToken cancellationToken = default) public ValueTask WriteLineAsync(string value, CancellationToken cancellationToken = default)
{ {
throw new System.NotImplementedException(); throw new System.NotImplementedException();
}
} }
} }
...@@ -10,6 +10,8 @@ namespace Titanium.Web.Proxy ...@@ -10,6 +10,8 @@ namespace Titanium.Web.Proxy
class Net45Compatibility class Net45Compatibility
{ {
public static byte[] EmptyArray = new byte[0]; public static byte[] EmptyArray = new byte[0];
public static Task CompletedTask = new Task(() => { });
} }
} }
#endif #endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment