mirror of
https://github.com/cesanta/mongoose.git
synced 2025-08-06 13:37:34 +08:00
Fix DNS timeout, add unit test
This commit is contained in:
parent
51bc5f70c5
commit
6ecb6c1500
@ -1,4 +1,5 @@
|
|||||||
PROG ?= example
|
PROG ?= example
|
||||||
|
CFLAGS ?= -DMG_ENABLE_LINES $(CFLAGS_EXTRA)
|
||||||
MBEDTLS_DIR ?=
|
MBEDTLS_DIR ?=
|
||||||
|
|
||||||
ifeq "$(MBEDTLS_DIR)" ""
|
ifeq "$(MBEDTLS_DIR)" ""
|
||||||
|
@ -261,7 +261,7 @@ static void dns_cb(struct mg_connection *c, int ev, void *ev_data,
|
|||||||
struct dns_data *d, *tmp;
|
struct dns_data *d, *tmp;
|
||||||
if (ev == MG_EV_POLL) {
|
if (ev == MG_EV_POLL) {
|
||||||
unsigned long now = *(unsigned long *) ev_data;
|
unsigned long now = *(unsigned long *) ev_data;
|
||||||
for (d = (struct dns_data *) fn_data; d != NULL; d = tmp) {
|
for (d = s_reqs; d != NULL; d = tmp) {
|
||||||
tmp = d->next;
|
tmp = d->next;
|
||||||
// LOG(LL_DEBUG, ("%lu %lu dns poll", d->expire, now));
|
// LOG(LL_DEBUG, ("%lu %lu dns poll", d->expire, now));
|
||||||
if (now > d->expire) mg_error(d->c, "DNS timeout");
|
if (now > d->expire) mg_error(d->c, "DNS timeout");
|
||||||
@ -308,6 +308,7 @@ static void dns_cb(struct mg_connection *c, int ev, void *ev_data,
|
|||||||
mg_dns_free(d);
|
mg_dns_free(d);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
(void) fn_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
void mg_dns_send(struct mg_connection *c, const struct mg_str *name,
|
void mg_dns_send(struct mg_connection *c, const struct mg_str *name,
|
||||||
|
@ -135,7 +135,7 @@ static void dns_cb(struct mg_connection *c, int ev, void *ev_data,
|
|||||||
struct dns_data *d, *tmp;
|
struct dns_data *d, *tmp;
|
||||||
if (ev == MG_EV_POLL) {
|
if (ev == MG_EV_POLL) {
|
||||||
unsigned long now = *(unsigned long *) ev_data;
|
unsigned long now = *(unsigned long *) ev_data;
|
||||||
for (d = (struct dns_data *) fn_data; d != NULL; d = tmp) {
|
for (d = s_reqs; d != NULL; d = tmp) {
|
||||||
tmp = d->next;
|
tmp = d->next;
|
||||||
// LOG(LL_DEBUG, ("%lu %lu dns poll", d->expire, now));
|
// LOG(LL_DEBUG, ("%lu %lu dns poll", d->expire, now));
|
||||||
if (now > d->expire) mg_error(d->c, "DNS timeout");
|
if (now > d->expire) mg_error(d->c, "DNS timeout");
|
||||||
@ -182,6 +182,7 @@ static void dns_cb(struct mg_connection *c, int ev, void *ev_data,
|
|||||||
mg_dns_free(d);
|
mg_dns_free(d);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
(void) fn_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
void mg_dns_send(struct mg_connection *c, const struct mg_str *name,
|
void mg_dns_send(struct mg_connection *c, const struct mg_str *name,
|
||||||
|
@ -1002,6 +1002,11 @@ static void test_str(void) {
|
|||||||
ASSERT(mg_strcmp(mg_str("hi"), mg_strstrip(mg_str(" \thi\r\n"))) == 0);
|
ASSERT(mg_strcmp(mg_str("hi"), mg_strstrip(mg_str(" \thi\r\n"))) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void fn1(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
|
||||||
|
if (ev == MG_EV_ERROR) sprintf((char *) fn_data, "%s", (char *) ev_data);
|
||||||
|
(void) c;
|
||||||
|
}
|
||||||
|
|
||||||
static void test_dns(void) {
|
static void test_dns(void) {
|
||||||
struct mg_dns_message dm;
|
struct mg_dns_message dm;
|
||||||
// txid flags numQ numA numAP numOP
|
// txid flags numQ numA numAP numOP
|
||||||
@ -1021,14 +1026,20 @@ static void test_dns(void) {
|
|||||||
ASSERT(mg_dns_parse(data, sizeof(data), &dm) == 1);
|
ASSERT(mg_dns_parse(data, sizeof(data), &dm) == 1);
|
||||||
ASSERT(strcmp(dm.name, "") == 0);
|
ASSERT(strcmp(dm.name, "") == 0);
|
||||||
|
|
||||||
#if 0
|
|
||||||
{
|
{
|
||||||
char *data = mg_file_read("dns.bin");
|
// Test timeout
|
||||||
ASSERT(data != NULL);
|
struct mg_mgr mgr;
|
||||||
ASSERT(mg_dns_parse((uint8_t *) data, mg_file_size("dns.bin"), &dm) == 0);
|
struct mg_connection *c;
|
||||||
free(data);
|
char buf[100] = "";
|
||||||
|
int i;
|
||||||
|
mg_mgr_init(&mgr);
|
||||||
|
mgr.dns4.url = "udp://127.0.0.1:12345";
|
||||||
|
mgr.dnstimeout = 10;
|
||||||
|
c = mg_http_connect(&mgr, "http://google.com", fn1, buf);
|
||||||
|
for (i = 0; i < 50 && buf[0] == '\0'; i++) mg_mgr_poll(&mgr, 1);
|
||||||
|
mg_mgr_free(&mgr);
|
||||||
|
ASSERT(strcmp(buf, "DNS timeout") == 0);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_util(void) {
|
static void test_util(void) {
|
||||||
|
Loading…
Reference in New Issue
Block a user