mirror of
https://github.com/FastTunnel/FastTunnel.git
synced 2025-02-08 02:39:29 +08:00
[fix] socket not dispose
This commit is contained in:
parent
b9e0f62fa6
commit
29ff330c02
|
@ -1,4 +1,5 @@
|
|||
using FastTunnel.Core.Client;
|
||||
using FastTunnel.Core.Extensions;
|
||||
using FastTunnel.Core.MiddleWares;
|
||||
using Microsoft.AspNetCore.Connections.Features;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
|
@ -31,7 +32,7 @@ namespace FastTunnel.Core.Forwarder.MiddleWare
|
|||
}
|
||||
|
||||
var requestId = context.Request.Path.Value.Trim('/');
|
||||
logger.LogError($"[PROXY]:Start {requestId}");
|
||||
logger.LogDebug($"[PROXY]:Start {requestId}");
|
||||
|
||||
if (!fastTunnelServer.ResponseTasks.TryRemove(requestId, out var responseAwaiter))
|
||||
{
|
||||
|
@ -52,6 +53,8 @@ namespace FastTunnel.Core.Forwarder.MiddleWare
|
|||
responseAwaiter.TrySetResult(reverseConnection);
|
||||
|
||||
var closedAwaiter = new TaskCompletionSource<object>();
|
||||
closedAwaiter.SetTimeOut(1000 * 60 * 30, null);
|
||||
|
||||
lifetime.ConnectionClosed.Register((task) =>
|
||||
{
|
||||
(task as TaskCompletionSource<object>).SetResult(null);
|
||||
|
|
|
@ -55,13 +55,14 @@ namespace FastTunnel.Core.Handlers.Client
|
|||
private async Task<Stream> createLocal(string requestId, string localhost, CancellationToken cancellationToken)
|
||||
{
|
||||
var socket = await DnsSocketFactory.ConnectAsync(localhost.Split(":")[0], int.Parse(localhost.Split(":")[1]));
|
||||
return new NetworkStream(socket, true);
|
||||
return new NetworkStream(socket, true) { ReadTimeout = 1000 * 60 * 30 };
|
||||
}
|
||||
|
||||
private async Task<Stream> createRemote(string requestId, FastTunnelClient cleint, CancellationToken cancellationToken)
|
||||
{
|
||||
var socket = await DnsSocketFactory.ConnectAsync(cleint.Server.ServerAddr, cleint.Server.ServerPort);
|
||||
Stream serverStream = new NetworkStream(socket, true);
|
||||
Stream serverStream = new NetworkStream(socket, true) { ReadTimeout = 1000 * 60 * 30 };
|
||||
|
||||
if (cleint.Server.Protocol == "wss")
|
||||
{
|
||||
var sslStream = new SslStream(serverStream, false, delegate { return true; });
|
||||
|
|
|
@ -69,7 +69,8 @@ namespace FastTunnel.Core.Dispatchers
|
|||
}
|
||||
|
||||
using var stream1 = await tcs.Task;
|
||||
using var stream2 = new NetworkStream(_socket, true);
|
||||
using var stream2 = new NetworkStream(_socket, true) { ReadTimeout = 1000 * 60 * 30 };
|
||||
|
||||
await Task.WhenAll(stream1.CopyToAsync(stream2), stream2.CopyToAsync(stream1));
|
||||
|
||||
logger.LogDebug($"[Forward]Swap OK {msgId}");
|
||||
|
|
Loading…
Reference in New Issue
Block a user