-
Notifications
You must be signed in to change notification settings - Fork 291
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve network error reporting on Windows #867
Conversation
|
06cb656
to
f25496f
Compare
Don't merge it yet, can't get logs out of Travis, it seems to be having some issue
|
f25496f
to
ae1d1ae
Compare
Removed the commit that enabled all Travis-CI jobs. Here is the the build. Alright, now we get actual error codes in the logs rather than The reported Btw, you might notice that the logger on Travis CI Windows builds doesn't print text explanations of errors, it prints code and |
Feel free to merge if it passes the review, I think I'm done with the PR. |
Reviewed 6 of 6 files at r1, 1 of 1 files at r2. toxcore/network.h, line 407 at r2 (raw file):
Get the last networking error code? toxcore/network.h, line 409 at r2 (raw file):
"cross-platform" toxcore/network.h, line 413 at r2 (raw file):
"you likely shouldn't" toxcore/network.h, line 414 at r2 (raw file):
"you likely just" toxcore/network.h, line 415 at r2 (raw file):
Remove leading "the" toxcore/network.h, line 425 at r2 (raw file):
"must be freed using toxcore/network.h, line 430 at r2 (raw file):
"returned by Comments from Reviewable |
ae1d1ae
to
90202a1
Compare
Should be fixed now. |
So, how does the PR look, @robinlinden? |
Reviewed 1 of 1 files at r3. Comments from Reviewable |
Review status: all files reviewed at latest revision, all discussions resolved, some commit checks failed. Comments from Reviewable |
Btw, I did int error = net_error(); in one cases but int neterror = net_error(); in other because there already was |
Reviewed 1 of 1 files at r2. toxcore/network.h, line 421 at r3 (raw file):
Add a note that the string returned should not be mutated, despite the type saying it's allowed. Alternatively, strdup+free. Comments from Reviewable |
Review status: all files reviewed at latest revision, 1 unresolved discussion, some commit checks failed. toxcore/network.h, line 421 at r3 (raw file): Previously, iphydf wrote…
Nice catch. You are right, while on Windows a new error string would be allocated for every call, so it can be modified, on Unix-like it would return a pointer to a static string, which shouldn't be modified. Your change suggestions are kind of weird though. Is there something wrong with changing the return type to Comments from Reviewable |
Review status: all files reviewed at latest revision, 1 unresolved discussion, some commit checks failed. toxcore/network.h, line 421 at r3 (raw file): Previously, nurupo wrote…
The problem with making it // network.h
typedef struct Net_Error Net_Error;
Net_Error *net_error_new(void);
void net_error_kill(Net_Error *err);
int net_error_code(const Net_Error *err);
const char *net_error_message(const Net_Error *err);
// network.c
struct Net_Error {
const int code;
char *const message;
};
// net_error_new allocates Net_Error and calls strerror or the windows function to populate message
// net_error_message returns the message (no allocation or other calls here) Comments from Reviewable |
90202a1
to
64bf43d
Compare
toxcore/network.h, line 421 at r3 (raw file): Previously, iphydf wrote…
What about now? Comments from Reviewable |
64bf43d
to
e856ade
Compare
7bf68a8
to
e856ade
Compare
Review status: 1 of 7 files reviewed at latest revision, 1 unresolved discussion, some commit checks failed. Comments from Reviewable |
Reviewed 5 of 6 files at r4, 1 of 1 files at r5. Comments from Reviewable |
d2c928c
to
a35fa18
Compare
Windows doesn't report network errors though errno, it has its own facilities.
a35fa18
to
7d399ce
Compare
v0.2.3 **Merged PRs:** - [TokTok#951] Only run astyle if the astyle binary exists. - [TokTok#950] Remove utils.c and utils.h from toxencryptsave build. - [TokTok#949] Fixes to the imported sodium sources to compile without warnings. - [TokTok#948] Add a MAX_HOSTNAME_LENGTH constant. - [TokTok#947] Remove the format test. - [TokTok#937] Add new Circle CI configuration. - [TokTok#935] Add a test for double conference invite. - [TokTok#933] Add Logger to various net_crypto functions, and add `const` to Logger where possible. - [TokTok#931] Avoid conditional-uninitialised warning for tcp test. - [TokTok#930] Disable UDP when proxy is enabled. - [TokTok#928] Use clang-format for C++ code. - [TokTok#927] Add assertions to bootstrap tests for correct connection type. - [TokTok#926] Make NULL options behave the same as default options. - [TokTok#925] Add tests for what happens when passing an invalid proxy host. - [TokTok#924] Make the net_crypto connection state an enum. - [TokTok#922] Clarify/Improve test_some test - [TokTok#921] Beginnings of a TCP_test.c overhaul - [TokTok#920] Add test for creating multiple conferences in one tox. - [TokTok#918] Merge irungentoo/master into toktok - [TokTok#917] Add random testing program. - [TokTok#916] Fix linking with address sanitizer. - [TokTok#915] Remove resource_leak_test. - [TokTok#914] Make dht_test more stable. - [TokTok#913] Minor cleanup: return early on error condition. - [TokTok#906] Sort bazel build file according to buildifier standard. - [TokTok#905] In DEBUG mode, make toxcore crash on signed integer overflow. - [TokTok#902] Log only the filename, not the full path in LOGGER. - [TokTok#899] Fix macOS macro because of GNU Mach - [TokTok#898] Fix enumeration of Crypto_Connection instances - [TokTok#897] Fix ipport_isset: port 0 is not a valid port. - [TokTok#894] Fix logging related crash in bootstrap node - [TokTok#893] Fix bootstrap crashes, still - [TokTok#892] Add empty logger to DHT bootstrap daemons. - [TokTok#887] Fix FreeBSD build on Travis - [TokTok#884] Fix the often call of event tox_friend_connection_status - [TokTok#883] Make toxcore compile on BSD - [TokTok#878] fix DHT_bootstrap key loading - [TokTok#877] Add minitox to under "Other resources" section in the README - [TokTok#875] Make bootstrap daemon use toxcore's version - [TokTok#867] Improve network error reporting on Windows - [TokTok#841] Only check full rtp offset if RTP_LARGE_FRAME is set - [TokTok#823] Finish @Diadlo's network Family abstraction. - [TokTok#822] Move system header includes from network.h to network.c
v0.2.3 **Merged PRs:** - [TokTok#951] Only run astyle if the astyle binary exists. - [TokTok#950] Remove utils.c and utils.h from toxencryptsave build. - [TokTok#949] Fixes to the imported sodium sources to compile without warnings. - [TokTok#948] Add a MAX_HOSTNAME_LENGTH constant. - [TokTok#947] Remove the format test. - [TokTok#937] Add new Circle CI configuration. - [TokTok#935] Add a test for double conference invite. - [TokTok#933] Add Logger to various net_crypto functions, and add `const` to Logger where possible. - [TokTok#931] Avoid conditional-uninitialised warning for tcp test. - [TokTok#930] Disable UDP when proxy is enabled. - [TokTok#928] Use clang-format for C++ code. - [TokTok#927] Add assertions to bootstrap tests for correct connection type. - [TokTok#926] Make NULL options behave the same as default options. - [TokTok#925] Add tests for what happens when passing an invalid proxy host. - [TokTok#924] Make the net_crypto connection state an enum. - [TokTok#922] Clarify/Improve test_some test - [TokTok#921] Beginnings of a TCP_test.c overhaul - [TokTok#920] Add test for creating multiple conferences in one tox. - [TokTok#918] Merge irungentoo/master into toktok - [TokTok#917] Add random testing program. - [TokTok#916] Fix linking with address sanitizer. - [TokTok#915] Remove resource_leak_test. - [TokTok#914] Make dht_test more stable. - [TokTok#913] Minor cleanup: return early on error condition. - [TokTok#906] Sort bazel build file according to buildifier standard. - [TokTok#905] In DEBUG mode, make toxcore crash on signed integer overflow. - [TokTok#902] Log only the filename, not the full path in LOGGER. - [TokTok#899] Fix macOS macro because of GNU Mach - [TokTok#898] Fix enumeration of Crypto_Connection instances - [TokTok#897] Fix ipport_isset: port 0 is not a valid port. - [TokTok#894] Fix logging related crash in bootstrap node - [TokTok#893] Fix bootstrap crashes, still - [TokTok#892] Add empty logger to DHT bootstrap daemons. - [TokTok#887] Fix FreeBSD build on Travis - [TokTok#884] Fix the often call of event tox_friend_connection_status - [TokTok#883] Make toxcore compile on BSD - [TokTok#878] fix DHT_bootstrap key loading - [TokTok#877] Add minitox to under "Other resources" section in the README - [TokTok#875] Make bootstrap daemon use toxcore's version - [TokTok#867] Improve network error reporting on Windows - [TokTok#841] Only check full rtp offset if RTP_LARGE_FRAME is set - [TokTok#823] Finish @Diadlo's network Family abstraction. - [TokTok#822] Move system header includes from network.h to network.c
Windows doesn't report network errors though errno, it has its own facilities.
Not sure if the
new
andkill
are the correct words here, toxcore seems to use them foralloc
andfree
, so I'm just following the pattern.This should fix the
Unexpected error reading from socket: 0, No error
error on Windows, which someone on IRC supposedly got 60000 times in 10 seconds. The issue was inBecause Windows doesn't use
errno
for error reporting, Windows was reportingEWOULDBLOCK
throughWSAGetLastError()
instead oferrno
, resulting in the logger being called when it shouldn't had been.This change is