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

windows: prepare for udp

This commit is contained in:
Andy Green 2019-03-10 05:12:58 +08:00
parent 579ed35249
commit 9c7162f253
2 changed files with 18 additions and 17 deletions

View file

@ -127,16 +127,13 @@ _lws_plat_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
lws_pt_unlock(pt);
}
{
unsigned int eIdx;
for (eIdx = 0; eIdx < pt->fds_count; ++eIdx)
WSAEventSelect(pt->fds[eIdx].fd, pt->events,
FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT |
FD_CONNECT | FD_CLOSE | FD_QOS |
FD_ROUTING_INTERFACE_CHANGE |
FD_ADDRESS_LIST_CHANGE);
}
for (n = 0; n < (int)pt->fds_count; n++)
WSAEventSelect(pt->fds[n].fd, pt->events,
FD_READ | (!!(pt->fds[n].events & LWS_POLLOUT) * FD_WRITE) |
FD_OOB | FD_ACCEPT |
FD_CONNECT | FD_CLOSE | FD_QOS |
FD_ROUTING_INTERFACE_CHANGE |
FD_ADDRESS_LIST_CHANGE);
ev = WSAWaitForMultipleEvents(1, &pt->events, FALSE, timeout_ms, FALSE);
if (ev == WSA_WAIT_EVENT_0) {

View file

@ -132,10 +132,15 @@ void
lws_plat_insert_socket_into_fds(struct lws_context *context, struct lws *wsi)
{
struct lws_context_per_thread *pt = &context->pt[(int)wsi->tsi];
int n = LWS_POLLIN | LWS_POLLHUP | FD_CONNECT;
if (wsi->udp) {
lwsl_info("%s: UDP\n", __func__);
n = LWS_POLLIN;
}
pt->fds[pt->fds_count++].revents = 0;
WSAEventSelect(wsi->desc.sockfd, pt->events,
LWS_POLLIN | LWS_POLLHUP | FD_CONNECT);
WSAEventSelect(wsi->desc.sockfd, pt->events, n);
}
void
@ -170,16 +175,15 @@ lws_plat_change_pollfd(struct lws_context *context,
struct lws *wsi, struct lws_pollfd *pfd)
{
struct lws_context_per_thread *pt = &context->pt[(int)wsi->tsi];
long networkevents = LWS_POLLHUP | FD_CONNECT;
long e = LWS_POLLHUP | FD_CONNECT;
if ((pfd->events & LWS_POLLIN))
networkevents |= LWS_POLLIN;
e |= LWS_POLLIN;
if ((pfd->events & LWS_POLLOUT))
networkevents |= LWS_POLLOUT;
e |= LWS_POLLOUT;
if (WSAEventSelect(wsi->desc.sockfd, pt->events,
networkevents) != SOCKET_ERROR)
if (WSAEventSelect(wsi->desc.sockfd, pt->events, e) != SOCKET_ERROR)
return 0;
lwsl_err("WSAEventSelect() failed with error %d\n", LWS_ERRNO);