libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

commit 34a6a0254f3a343f4fdb5efa9633dd2b589bf929
parent c5c6afeeb904822a857818c7026e0c49589e5e86
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date:   Sat, 15 Jan 2022 15:29:56 +0300

test_upgrade: don't fail with particular sockets errors

Diffstat:
Msrc/microhttpd/test_upgrade.c | 20+++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/src/microhttpd/test_upgrade.c b/src/microhttpd/test_upgrade.c @@ -772,7 +772,8 @@ send_all (struct wr_socket *sock, len - off); if (0 > ret) { - if (MHD_SCKT_ERR_IS_EAGAIN_ (MHD_socket_get_error_ ())) + if (MHD_SCKT_ERR_IS_EAGAIN_ (MHD_socket_get_error_ ()) || + MHD_SCKT_ERR_IS_EINTR_ (MHD_socket_get_error_ ())) { ret = 0; continue; @@ -807,6 +808,8 @@ recv_hdr (struct wr_socket *sock) { if (MHD_SCKT_ERR_IS_EAGAIN_ (MHD_socket_get_error_ ())) continue; + if (MHD_SCKT_ERR_IS_EINTR_ (MHD_socket_get_error_ ())) + continue; externalErrorExitDesc ("recv() failed"); } if (0 == ret) @@ -849,7 +852,8 @@ recv_all (struct wr_socket *sock, len - off); if (0 > ret) { - if (MHD_SCKT_ERR_IS_EAGAIN_ (MHD_socket_get_error_ ())) + if (MHD_SCKT_ERR_IS_EAGAIN_ (MHD_socket_get_error_ ()) || + MHD_SCKT_ERR_IS_EINTR_ (MHD_socket_get_error_ ())) { ret = 0; continue; @@ -1107,7 +1111,17 @@ run_mhd_select_loop (struct MHD_Daemon *daemon) &ws, &es, &tv)) - mhdErrorExitDesc ("MHD_get_fdset() failed"); /* TODO: handle errors */ + { +#ifdef MHD_POSIX_SOCKETS + if (EINTR != errno) + externalErrorExitDesc ("Unexpected select() error"); +#else + if ((WSAEINVAL != WSAGetLastError ()) || + (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) ) + externalErrorExitDesc ("Unexpected select() error"); + Sleep (tv.tv_sec * 1000 + tv.tv_usec / 1000); +#endif + } MHD_run_from_select (daemon, &rs, &ws,