aboutsummaryrefslogtreecommitdiff
path: root/src/core/network/network.h
diff options
context:
space:
mode:
authorcomex <comexk@gmail.com>2021-01-24 15:17:02 -0500
committercomex <comexk@gmail.com>2021-02-28 17:25:31 -0500
commit2910aa77b2feea39fc0618598e275b138a346e71 (patch)
tree2760d0c2914c672ae2cd2450851e4feda3b053e5 /src/core/network/network.h
parent9e9341f4b4c4165970252b73d4b02b8661fbc0b8 (diff)
[network] Error handling reform
`network.cpp` has several error paths which either: - report "Unhandled host socket error=n" and return `SUCCESS`, or - switch on a few possible errors, log them, and translate them to Errno; the same switch statement is copied and pasted in multiple places in the code Convert these paths to use a helper function `GetAndLogLastError`, which is roughly the equivalent of one of the switch statements, but: - handling more cases (both ones that were already in `Errno`, and a few more I added), and - using OS functions to convert the error to a string when logging, so it'll describe the error even if it's not one of the ones in the switch statement. - To handle this, refactor the logic in `GetLastErrorMsg` to expose a new function `NativeErrorToString` which takes the error number explicitly as an argument. And improve the Windows version a bit. Also, add a test which exercises two random error paths.
Diffstat (limited to 'src/core/network/network.h')
-rw-r--r--src/core/network/network.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/core/network/network.h b/src/core/network/network.h
index 76b2821f2..bd30f1899 100644
--- a/src/core/network/network.h
+++ b/src/core/network/network.h
@@ -7,6 +7,7 @@
#include <array>
#include <utility>
+#include "common/common_funcs.h"
#include "common/common_types.h"
namespace Network {
@@ -21,6 +22,11 @@ enum class Errno {
MFILE,
NOTCONN,
AGAIN,
+ CONNREFUSED,
+ HOSTUNREACH,
+ NETDOWN,
+ NETUNREACH,
+ OTHER,
};
/// Address families