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 <omarh.ismail1@gmail.com>
This commit is contained in:
cyan
2025-09-22 08:16:35 +03:00
committed by GitHub
co-authored by Omar Hatem
parent 47092d629c
commit 5a27f0adcd
4 changed files with 63 additions and 23 deletions
+1 -1
View File
@@ -93,7 +93,7 @@ packages:
dependency: "direct overridden"
description:
path: "."
ref: cake-update-v11
ref: "490046a3e074dd7b9aaf7098a5efe61b6246d3b2"
resolved-ref: "46e5a2d8a5438cb523a6104b70f5e5125a5663b3"
url: "https://github.com/cake-tech/bitcoin_base"
source: git
+23 -8
View File
@@ -16,25 +16,40 @@ class ProxySocketInsecure implements ProxySocket {
@override
Future<void> close() async {
try {
if (_isClosed) return;
_isClosed = true;
return socket.close();
_isClosed = true;
return socket.close();
} catch (e) {
printV("ProxySocketInsecure: close: $e");
return;
}
}
@override
void destroy() async {
if (_isClosed) return;
_isClosed = true;
socket.destroy();
try {
if (_isClosed) return;
_isClosed = true;
socket.destroy();
} catch (e) {
printV("ProxySocketInsecure: destroy: $e");
return;
}
}
@override
void write(String data) {
if (_isClosed) {
printV("ProxySocketInsecure: write: socket is closed");
try {
if (_isClosed) {
printV("ProxySocketInsecure: write: socket is closed");
return;
}
socket.write(data);
} catch (e) {
printV("ProxySocketInsecure: write: $e");
return;
}
socket.write(data);
}
@override
+23 -8
View File
@@ -16,25 +16,40 @@ class ProxySocketSecure implements ProxySocket {
@override
Future<void> close() async {
if (_isClosed) return;
_isClosed = true;
return socket.close();
try {
if (_isClosed) return;
_isClosed = true;
return socket.close();
} catch (e) {
printV("ProxySocketSecure: close: $e");
return;
}
}
@override
void destroy() async {
try {
if (_isClosed) return;
_isClosed = true;
socket.destroy();
_isClosed = true;
socket.destroy();
} catch (e) {
printV("ProxySocketSecure: destroy: $e");
return;
}
}
@override
void write(String data) {
if (_isClosed) {
printV("ProxySocketSecure: write: socket is closed");
try {
if (_isClosed) {
printV("ProxySocketSecure: write: socket is closed");
return;
}
socket.write(data);
} catch (e) {
printV("ProxySocketSecure: write: $e");
return;
}
socket.write(data);
}
@override
+16 -6
View File
@@ -15,9 +15,14 @@ class ProxySocketSocks implements ProxySocket {
@override
Future<void> close() async {
if (_isClosed) return;
_isClosed = true;
return socket.close();
try {
if (_isClosed) return;
_isClosed = true;
await socket.close();
} catch (e) {
printV("ProxySocketSocks: close: $e");
return;
}
}
@override
@@ -25,11 +30,16 @@ class ProxySocketSocks implements ProxySocket {
@override
void write(String data) {
if (_isClosed) {
printV("ProxySocketSocks: write: socket is closed");
try {
if (_isClosed) {
printV("ProxySocketSocks: write: socket is closed");
return;
}
socket.write(data);
} catch (e) {
printV("ProxySocketSocks: write: $e");
return;
}
socket.write(data);
}
@override