Skip to content

Commit 5a27f0a

Browse files
fix: socket error handling (#2521)
* fix: silence unhandled async errors in bitcoin_base fix: wrap all ProxySocket calls in try catch just to be sure * revert to v11 since pr is merged [skip ci] * revert to v11 since pr is merged [skip ci] * revert to v11 since pr is merged [skip ci] * revert to v11 since pr is merged [skip ci] --------- Co-authored-by: Omar Hatem <[email protected]>
1 parent 47092d6 commit 5a27f0a

File tree

4 files changed

+63
-23
lines changed

4 files changed

+63
-23
lines changed

cw_bitcoin/pubspec.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ packages:
9393
dependency: "direct overridden"
9494
description:
9595
path: "."
96-
ref: cake-update-v11
96+
ref: "490046a3e074dd7b9aaf7098a5efe61b6246d3b2"
9797
resolved-ref: "46e5a2d8a5438cb523a6104b70f5e5125a5663b3"
9898
url: "https://github.com/cake-tech/bitcoin_base"
9999
source: git

cw_core/lib/utils/proxy_socket/insecure.dart

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,40 @@ class ProxySocketInsecure implements ProxySocket {
1616

1717
@override
1818
Future<void> close() async {
19+
try {
1920
if (_isClosed) return;
20-
_isClosed = true;
21-
return socket.close();
21+
_isClosed = true;
22+
return socket.close();
23+
} catch (e) {
24+
printV("ProxySocketInsecure: close: $e");
25+
return;
26+
}
2227
}
2328

2429
@override
2530
void destroy() async {
26-
if (_isClosed) return;
27-
_isClosed = true;
28-
socket.destroy();
31+
try {
32+
if (_isClosed) return;
33+
_isClosed = true;
34+
socket.destroy();
35+
} catch (e) {
36+
printV("ProxySocketInsecure: destroy: $e");
37+
return;
38+
}
2939
}
3040

3141
@override
3242
void write(String data) {
33-
if (_isClosed) {
34-
printV("ProxySocketInsecure: write: socket is closed");
43+
try {
44+
if (_isClosed) {
45+
printV("ProxySocketInsecure: write: socket is closed");
46+
return;
47+
}
48+
socket.write(data);
49+
} catch (e) {
50+
printV("ProxySocketInsecure: write: $e");
3551
return;
3652
}
37-
socket.write(data);
3853
}
3954

4055
@override

cw_core/lib/utils/proxy_socket/secure.dart

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,40 @@ class ProxySocketSecure implements ProxySocket {
1616

1717
@override
1818
Future<void> close() async {
19-
if (_isClosed) return;
20-
_isClosed = true;
21-
return socket.close();
19+
try {
20+
if (_isClosed) return;
21+
_isClosed = true;
22+
return socket.close();
23+
} catch (e) {
24+
printV("ProxySocketSecure: close: $e");
25+
return;
26+
}
2227
}
2328

2429
@override
2530
void destroy() async {
31+
try {
2632
if (_isClosed) return;
27-
_isClosed = true;
28-
socket.destroy();
33+
_isClosed = true;
34+
socket.destroy();
35+
} catch (e) {
36+
printV("ProxySocketSecure: destroy: $e");
37+
return;
38+
}
2939
}
3040

3141
@override
3242
void write(String data) {
33-
if (_isClosed) {
34-
printV("ProxySocketSecure: write: socket is closed");
43+
try {
44+
if (_isClosed) {
45+
printV("ProxySocketSecure: write: socket is closed");
46+
return;
47+
}
48+
socket.write(data);
49+
} catch (e) {
50+
printV("ProxySocketSecure: write: $e");
3551
return;
3652
}
37-
socket.write(data);
3853
}
3954

4055
@override

cw_core/lib/utils/proxy_socket/socks.dart

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,31 @@ class ProxySocketSocks implements ProxySocket {
1515

1616
@override
1717
Future<void> close() async {
18-
if (_isClosed) return;
19-
_isClosed = true;
20-
return socket.close();
18+
try {
19+
if (_isClosed) return;
20+
_isClosed = true;
21+
await socket.close();
22+
} catch (e) {
23+
printV("ProxySocketSocks: close: $e");
24+
return;
25+
}
2126
}
2227

2328
@override
2429
void destroy() => close();
2530

2631
@override
2732
void write(String data) {
28-
if (_isClosed) {
29-
printV("ProxySocketSocks: write: socket is closed");
33+
try {
34+
if (_isClosed) {
35+
printV("ProxySocketSocks: write: socket is closed");
36+
return;
37+
}
38+
socket.write(data);
39+
} catch (e) {
40+
printV("ProxySocketSocks: write: $e");
3041
return;
3142
}
32-
socket.write(data);
3343
}
3444

3545
@override

0 commit comments

Comments
 (0)