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 }