fix: don't close closed sockets (#2462)
cyan committed
Aug 19, 2025 at 11:04 UTC
013211e7a683d31c3928ec56b878887b052a7593
3 files changed
+10
-5
cw_core/lib/utils/proxy_socket/insecure.dart
+4
-2
@@ -15,13 +15,15 @@ class ProxySocketInsecure implements ProxySocket {
15
ProxyAddress get address => ProxyAddress(host: socket.remoteAddress.host, port: socket.remotePort);
16
17
@override
18
- Future<void> close() {
18
+ Future<void> close() async {
19
+ if (_isClosed) return;
20
_isClosed = true;
21
return socket.close();
22
}
23
24
@override
24
- void destroy() {
25
+ void destroy() async {
26
+ if (_isClosed) return;
27
_isClosed = true;
28
socket.destroy();
29
}
cw_core/lib/utils/proxy_socket/secure.dart
+4
-2
@@ -15,13 +15,15 @@ class ProxySocketSecure implements ProxySocket {
15
ProxyAddress get address => ProxyAddress(host: socket.remoteAddress.host, port: socket.remotePort);
16
17
@override
18
- Future<void> close() {
18
+ Future<void> close() async {
19
+ if (_isClosed) return;
20
_isClosed = true;
21
return socket.close();
22
}
23
24
@override
24
- void destroy() {
25
+ void destroy() async {
26
+ if (_isClosed) return;
27
_isClosed = true;
28
socket.destroy();
29
}
cw_core/lib/utils/proxy_socket/socks.dart
+2
-1
@@ -14,7 +14,8 @@ class ProxySocketSocks implements ProxySocket {
14
ProxyAddress get address => ProxyAddress(host: socket.proxyHost, port: socket.proxyPort);
15
16
@override
17
- Future<void> close() {
17
+ Future<void> close() async {
18
+ if (_isClosed) return;
19
_isClosed = true;
20
return socket.close();
21
}