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

Commit 4c6a8f5

Browse files
committed
Add property for client local endoint (not the lsitening endpoint, the actual EP for the connection)
1 parent 9c2bc8b commit 4c6a8f5

File tree

8 files changed

+37
-26
lines changed

8 files changed

+37
-26
lines changed

examples/Titanium.Web.Proxy.Examples.Wpf/MainWindow.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
<GridViewColumn Header="Process" DisplayMemberBinding="{Binding Process}" />
3232
<GridViewColumn Header="SentBytes" DisplayMemberBinding="{Binding SentDataCount}" />
3333
<GridViewColumn Header="ReceivedBytes" DisplayMemberBinding="{Binding ReceivedDataCount}" />
34-
<GridViewColumn Header="ClientEndPoint" DisplayMemberBinding="{Binding ClientEndPoint}" />
34+
<GridViewColumn Header="ClientRemoteEndPoint" DisplayMemberBinding="{Binding ClientRemoteEndPoint}" />
3535
<GridViewColumn Header="ClientConnectionId" DisplayMemberBinding="{Binding ClientConnectionId}" />
3636
<GridViewColumn Header="ServerConnectionId" DisplayMemberBinding="{Binding ServerConnectionId}" />
3737
</GridView>

examples/Titanium.Web.Proxy.Examples.Wpf/MainWindow.xaml.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,8 @@ private SessionListItem createSessionListItem(SessionEventArgsBase e)
229229
ClientConnectionId = e.ClientConnectionId,
230230
ServerConnectionId = e.ServerConnectionId,
231231
HttpClient = e.HttpClient,
232-
ClientEndPoint = e.ClientEndPoint,
232+
ClientRemoteEndPoint = e.ClientRemoteEndPoint,
233+
ClientLocalEndPoint = e.ClientLocalEndPoint,
233234
IsTunnelConnect = isTunnelConnect
234235
};
235236

examples/Titanium.Web.Proxy.Examples.Wpf/SessionListItem.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ public Guid ServerConnectionId
3838

3939
public HttpWebClient HttpClient { get; set; }
4040

41-
public IPEndPoint ClientEndPoint { get; set; }
41+
public IPEndPoint ClientLocalEndPoint { get; set; }
42+
43+
public IPEndPoint ClientRemoteEndPoint { get; set; }
4244

4345
public bool IsTunnelConnect { get; set; }
4446

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public class SessionEventArgs : SessionEventArgsBase
2525
/// </summary>
2626
private bool reRequest;
2727

28-
private WebSocketDecoder webSocketDecoder;
28+
private WebSocketDecoder? webSocketDecoder;
2929

3030
/// <summary>
3131
/// Is this session a HTTP/2 promise?
@@ -221,7 +221,7 @@ internal async Task SyphonOutBodyAsync(bool isRequest, CancellationToken cancell
221221

222222
var reader = isRequest ? (HttpStream)ClientStream : HttpClient.Connection.Stream;
223223

224-
await reader.CopyBodyAsync(requestResponse, true, new NullWriter(), TransformationMode.None, null, cancellationToken);
224+
await reader.CopyBodyAsync(requestResponse, true, NullWriter.Instance, TransformationMode.None, null, cancellationToken);
225225
}
226226

227227
/// <summary>

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,14 @@ public bool EnableWinAuth
9494
public bool IsHttps => HttpClient.Request.IsHttps;
9595

9696
/// <summary>
97-
/// Client End Point.
97+
/// Client Local End Point.
9898
/// </summary>
99-
public IPEndPoint ClientEndPoint => (IPEndPoint)ClientConnection.RemoteEndPoint;
99+
public IPEndPoint ClientLocalEndPoint => (IPEndPoint)ClientConnection.LocalEndPoint;
100+
101+
/// <summary>
102+
/// Client Remote End Point.
103+
/// </summary>
104+
public IPEndPoint ClientRemoteEndPoint => (IPEndPoint)ClientConnection.RemoteEndPoint;
100105

101106
/// <summary>
102107
/// The web client used to communicate with server for this session.

src/Titanium.Web.Proxy/ExplicitClientHandler.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ private async Task handleClient(ExplicitProxyEndPoint endPoint, TcpClientConnect
3737

3838
Task<TcpServerConnection>? prefetchConnectionTask = null;
3939
bool closeServerConnection = false;
40-
bool calledRequestHandler = false;
4140

4241
try
4342
{
@@ -375,10 +374,11 @@ await Http2Helper.SendHttp2(clientStream, connection.Stream,
375374
}
376375
}
377376

378-
calledRequestHandler = true;
377+
var prefetchTask = prefetchConnectionTask;
378+
prefetchConnectionTask = null;
379379

380380
// Now create the request
381-
await handleHttpSessionRequest(endPoint, clientStream, cancellationTokenSource, connectArgs, prefetchConnectionTask);
381+
await handleHttpSessionRequest(endPoint, clientStream, cancellationTokenSource, connectArgs, prefetchTask);
382382
}
383383
catch (ProxyException e)
384384
{
@@ -407,10 +407,7 @@ await Http2Helper.SendHttp2(clientStream, connection.Stream,
407407
cancellationTokenSource.Cancel();
408408
}
409409

410-
if (!calledRequestHandler)
411-
{
412-
await tcpConnectionFactory.Release(prefetchConnectionTask, closeServerConnection);
413-
}
410+
await tcpConnectionFactory.Release(prefetchConnectionTask, closeServerConnection);
414411

415412
clientStream.Dispose();
416413
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ internal class NullWriter : IHttpStreamWriter
88
{
99
public static NullWriter Instance { get; } = new NullWriter();
1010

11+
private NullWriter()
12+
{
13+
}
14+
1115
public void Write(byte[] buffer, int offset, int count)
1216
{
1317
}

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

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -580,20 +580,22 @@ internal async Task Release(TcpServerConnection connection, bool close = false)
580580

581581
internal async Task Release(Task<TcpServerConnection>? connectionCreateTask, bool closeServerConnection)
582582
{
583-
if (connectionCreateTask != null)
583+
if (connectionCreateTask == null)
584584
{
585-
TcpServerConnection? connection = null;
586-
try
587-
{
588-
connection = await connectionCreateTask;
589-
}
590-
catch { }
591-
finally
585+
return;
586+
}
587+
588+
TcpServerConnection? connection = null;
589+
try
590+
{
591+
connection = await connectionCreateTask;
592+
}
593+
catch { }
594+
finally
595+
{
596+
if (connection != null)
592597
{
593-
if (connection != null)
594-
{
595-
await Release(connection, closeServerConnection);
596-
}
598+
await Release(connection, closeServerConnection);
597599
}
598600
}
599601
}

0 commit comments

Comments
 (0)