1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-09 00:00:04 +01:00

adns-api-test-l

Add -l option on lws-api-test-async-dns that makes it sit there trying to
lookup warmcat.com every 5s until ^C.  This is useful to test behaviour
over loss of connectivity and regaining it.
This commit is contained in:
Andy Green 2021-02-02 13:48:35 +00:00
parent 15bb455249
commit 3192b3cab9
2 changed files with 59 additions and 2 deletions

View file

@ -640,7 +640,7 @@ lws_async_dns_query(struct lws_context *context, int tsi, const char *name,
lws_dll2_add_head(&c->list, &dns->cached);
lws_sul_schedule(context, 0, &c->sul, sul_cb_expire,
lws_now_usecs() + (3600ll * LWS_US_PER_SEC));
3600ll * LWS_US_PER_SEC);
}
if (m == 4) {

View file

@ -118,7 +118,6 @@ next_test_cb(lws_sorted_usec_list_t *sul)
}
}
struct lws *
cb1(struct lws *wsi_unused, const char *ads, const struct addrinfo *a, int n,
void *opaque)
@ -199,6 +198,58 @@ next:
return NULL;
}
static lws_sorted_usec_list_t sul_l;
struct lws *
cb_loop(struct lws *wsi_unused, const char *ads, const struct addrinfo *a, int n,
void *opaque)
{
if (!a) {
lwsl_err("%s: no results\n", __func__);
return NULL;
}
lwsl_notice("%s: addrinfo %p\n", __func__, a);\
lws_async_dns_freeaddrinfo(&a);
return NULL;
}
static void
sul_retry_l(struct lws_sorted_usec_list *sul)
{
int m;
lwsl_user("%s: starting new query\n", __func__);
m = lws_async_dns_query(context, 0, "warmcat.com",
(adns_query_type_t)LWS_ADNS_RECORD_A,
cb_loop, NULL, context);
switch (m) {
case LADNS_RET_FAILED_WSI_CLOSED:
lwsl_warn("%s: LADNS_RET_FAILED_WSI_CLOSED "
"(== from cache / success in this test)\n", __func__);
break;
case LADNS_RET_NXDOMAIN:
lwsl_warn("%s: LADNS_RET_NXDOMAIN\n", __func__);
break;
case LADNS_RET_TIMEDOUT:
lwsl_warn("%s: LADNS_RET_TIMEDOUT\n", __func__);
break;
case LADNS_RET_FAILED:
lwsl_warn("%s: LADNS_RET_FAILED\n", __func__);
break;
case LADNS_RET_FOUND:
lwsl_warn("%s: LADNS_RET_FOUND\n", __func__);
break;
case LADNS_RET_CONTINUING:
lwsl_warn("%s: LADNS_RET_CONTINUING\n", __func__);
break;
}
lws_sul_schedule(context, 0, &sul_l, sul_retry_l, 5 * LWS_US_PER_SEC);
}
void sigint_handler(int sig)
{
@ -232,6 +283,11 @@ main(int argc, const char **argv)
return 1;
}
if (lws_cmdline_option(argc, argv, "-l")) {
lws_sul_schedule(context, 0, &sul_l, sul_retry_l, LWS_US_PER_SEC);
goto evloop;
}
/* ip address parser tests */
@ -297,6 +353,7 @@ main(int argc, const char **argv)
lws_sul_schedule(context, 0, &sul, next_test_cb, 1);
evloop:
/* the usual lws event loop */
n = 1;