Skip to content

Commit 47bc76f

Browse files
committed
fix: UdpListenService bind order
1 parent 8089423 commit 47bc76f

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

Shadowsocks.Protocol/ListenServices/TcpListenService.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ namespace Shadowsocks.Protocol.ListenServices
1616
{
1717
public class TcpListenService : IListenService
1818
{
19-
private readonly ILogger<TcpListenService> _logger;
2019
public TcpListener TCPListener { get; }
20+
21+
private readonly ILogger<TcpListenService> _logger;
2122
private readonly IEnumerable<ILocalTcpService> _services;
2223

2324
private readonly CancellationTokenSource _cts;
@@ -29,9 +30,9 @@ public class TcpListenService : IListenService
2930
public TcpListenService(ILogger<TcpListenService> logger, IPEndPoint local, IEnumerable<ILocalTcpService> services)
3031
{
3132
_logger = logger;
32-
TCPListener = new TcpListener(local);
3333
_services = services;
3434

35+
TCPListener = new TcpListener(local);
3536
_cts = new CancellationTokenSource();
3637
}
3738

Shadowsocks.Protocol/ListenServices/UdpListenService.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ namespace Shadowsocks.Protocol.ListenServices
1313
{
1414
public class UdpListenService : IListenService
1515
{
16-
private readonly ILogger<UdpListenService> _logger;
1716
public UdpClient UdpListener { get; }
17+
18+
private readonly ILogger<UdpListenService> _logger;
19+
private readonly IPEndPoint _local;
1820
private readonly IEnumerable<ILocalUdpService> _services;
1921

2022
private readonly CancellationTokenSource _cts;
@@ -24,17 +26,20 @@ public class UdpListenService : IListenService
2426
public UdpListenService(ILogger<UdpListenService> logger, IPEndPoint local, IEnumerable<ILocalUdpService> services)
2527
{
2628
_logger = logger;
27-
UdpListener = new UdpClient(local);
29+
_local = local;
2830
_services = services;
2931

32+
UdpListener = new UdpClient(local.AddressFamily);
3033
_cts = new CancellationTokenSource();
3134
}
3235

3336
public async ValueTask StartAsync()
3437
{
3538
try
3639
{
40+
UdpListener.Client.Bind(_local);
3741
_logger.LogInformation(@"{0} {1} Start", LoggerHeader, UdpListener.Client.LocalEndPoint);
42+
3843
while (!_cts.IsCancellationRequested)
3944
{
4045
//TODO .NET6.0

0 commit comments

Comments
 (0)