From 4aad859e2093acc392bcc7e3674760700fa84bf9 Mon Sep 17 00:00:00 2001 From: Sergey Lyubka Date: Fri, 27 May 2022 21:44:03 +0100 Subject: [PATCH] More SNtp debug 5 --- mongoose.c | 7 +++++-- src/sock.c | 7 +++++-- test/unit_test.c | 10 ++++++++-- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/mongoose.c b/mongoose.c index 8da22778..7d857b9f 100644 --- a/mongoose.c +++ b/mongoose.c @@ -4413,8 +4413,9 @@ static void mg_iotest(struct mg_mgr *mgr, int ms) { } } - MG_DEBUG(("n=%d ms=%d", n, ms)); - if (poll(fds, n, ms) < 0) { + int res = poll(fds, n, ms); + MG_DEBUG(("n=%d ms=%d res=%d errno=%d", n, ms, res, errno)); + if (res < 0) { MG_ERROR(("poll failed, errno: %d", MG_SOCK_ERRNO)); } else { i = 0; @@ -4426,6 +4427,8 @@ static void mg_iotest(struct mg_mgr *mgr, int ms) { c->is_writable = (unsigned) (fds[i].revents & POLLOUT ? 1 : 0); fds[i].revents = 0; if (mg_tls_pending(c) > 0) c->is_readable = 1; + MG_DEBUG((" fd=%d events=%d revents=%d", fds[i].fd, fds[i].events, + fds[i].revents)); } } } diff --git a/src/sock.c b/src/sock.c index 46dbfd3f..3b67c0b5 100644 --- a/src/sock.c +++ b/src/sock.c @@ -494,8 +494,9 @@ static void mg_iotest(struct mg_mgr *mgr, int ms) { } } - MG_DEBUG(("n=%d ms=%d", n, ms)); - if (poll(fds, n, ms) < 0) { + int res = poll(fds, n, ms); + MG_DEBUG(("n=%d ms=%d res=%d errno=%d", n, ms, res, errno)); + if (res < 0) { MG_ERROR(("poll failed, errno: %d", MG_SOCK_ERRNO)); } else { i = 0; @@ -507,6 +508,8 @@ static void mg_iotest(struct mg_mgr *mgr, int ms) { c->is_writable = (unsigned) (fds[i].revents & POLLOUT ? 1 : 0); fds[i].revents = 0; if (mg_tls_pending(c) > 0) c->is_readable = 1; + MG_DEBUG((" fd=%d events=%d revents=%d", fds[i].fd, fds[i].events, + fds[i].revents)); } } } diff --git a/test/unit_test.c b/test/unit_test.c index 00dd1798..643d5388 100644 --- a/test/unit_test.c +++ b/test/unit_test.c @@ -13,6 +13,12 @@ static int s_num_tests = 0; #define FETCH_BUF_SIZE (256 * 1024) +#define POLL_UNTIL(_mgr, _timeout, _condition) \ + do { \ + uint64_t until = mg_millis() + _timeout; \ + while (mg_millis() < until && (_condition)) mg_mgr_poll(_mgr, 5); \ + } while (0) + // Important: we use different port numbers for the Windows bug workaround. See // https://support.microsoft.com/en-ae/help/3039044/error-10013-wsaeacces-is-returned-when-a-second-bind-to-a-excluded-por @@ -296,13 +302,12 @@ static void test_sntp_server(const char *url) { int64_t ms = 0; struct mg_mgr mgr; struct mg_connection *c = NULL; - int i; mg_mgr_init(&mgr); c = mg_sntp_connect(&mgr, url, sntp_cb, &ms); ASSERT(c != NULL); ASSERT(c->is_udp == 1); - for (i = 0; i < 60 && ms == 0; i++) mg_mgr_poll(&mgr, 50); + POLL_UNTIL(&mgr, 3000, ms == 0); MG_DEBUG(("server: %s, ms: %lld", url ? url : "(default)", ms)); ASSERT(ms > 0); mg_mgr_free(&mgr); @@ -311,6 +316,7 @@ static void test_sntp_server(const char *url) { static void test_sntp(void) { test_sntp_server("udp://time.windows.com:123"); test_sntp_server(NULL); + exit(0); { int64_t ms;