diff --git a/mongoose.c b/mongoose.c index dddbf037735a4d61b06337039631d3680c03df60..31ec44e141e80d464c213b0371e597044bd86929 100644 --- a/mongoose.c +++ b/mongoose.c @@ -3786,7 +3786,10 @@ time_t mg_mgr_poll(struct mg_mgr *mgr, int timeout_ms) { int fd_flags = 0; if (nc->sock != INVALID_SOCKET) { if (num_ev > 0) { - fd_flags = (FD_ISSET(nc->sock, &read_set) ? _MG_F_FD_CAN_READ : 0) | + fd_flags = (FD_ISSET(nc->sock, &read_set) && + (!(nc->flags & MG_F_UDP) || nc->listener == NULL) + ? _MG_F_FD_CAN_READ + : 0) | (FD_ISSET(nc->sock, &write_set) ? _MG_F_FD_CAN_WRITE : 0) | (FD_ISSET(nc->sock, &err_set) ? _MG_F_FD_ERROR : 0); }