diff --git a/mongoose.c b/mongoose.c index c32b831a..7227e85a 100644 --- a/mongoose.c +++ b/mongoose.c @@ -3203,11 +3203,14 @@ void mg_connect_resolved(struct mg_connection *c) { c->fd = S2PTR(socket(af, type, 0)); if (FD(c) == INVALID_SOCKET) { mg_error(c, "socket(): %d", MG_SOCK_ERRNO); + } else if (c->is_udp) { + mg_call(c, MG_EV_RESOLVE, NULL); + mg_call(c, MG_EV_CONNECT, NULL); } else { union usa usa; socklen_t slen = tousa(&c->peer, &usa); - if (c->is_udp == 0) mg_set_non_blocking_mode(FD(c)); - if (c->is_udp == 0) setsockopts(c); + mg_set_non_blocking_mode(FD(c)); + setsockopts(c); mg_call(c, MG_EV_RESOLVE, NULL); if ((rc = connect(FD(c), &usa.sa, slen)) == 0) { mg_call(c, MG_EV_CONNECT, NULL); diff --git a/src/sock.c b/src/sock.c index a61de515..5a73efc2 100644 --- a/src/sock.c +++ b/src/sock.c @@ -344,11 +344,14 @@ void mg_connect_resolved(struct mg_connection *c) { c->fd = S2PTR(socket(af, type, 0)); if (FD(c) == INVALID_SOCKET) { mg_error(c, "socket(): %d", MG_SOCK_ERRNO); + } else if (c->is_udp) { + mg_call(c, MG_EV_RESOLVE, NULL); + mg_call(c, MG_EV_CONNECT, NULL); } else { union usa usa; socklen_t slen = tousa(&c->peer, &usa); - if (c->is_udp == 0) mg_set_non_blocking_mode(FD(c)); - if (c->is_udp == 0) setsockopts(c); + mg_set_non_blocking_mode(FD(c)); + setsockopts(c); mg_call(c, MG_EV_RESOLVE, NULL); if ((rc = connect(FD(c), &usa.sa, slen)) == 0) { mg_call(c, MG_EV_CONNECT, NULL);