aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Grin (Karlson2k) <k2k@narod.ru>2022-01-15 15:29:56 +0300
committerEvgeny Grin (Karlson2k) <k2k@narod.ru>2022-01-15 17:04:50 +0300
commit34a6a0254f3a343f4fdb5efa9633dd2b589bf929 (patch)
treeab279937806327a8a2396b60a9739d74b85c5ccf
parentc5c6afeeb904822a857818c7026e0c49589e5e86 (diff)
downloadlibmicrohttpd-34a6a0254f3a343f4fdb5efa9633dd2b589bf929.tar.gz
libmicrohttpd-34a6a0254f3a343f4fdb5efa9633dd2b589bf929.zip
test_upgrade: don't fail with particular sockets errors
-rw-r--r--src/microhttpd/test_upgrade.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/microhttpd/test_upgrade.c b/src/microhttpd/test_upgrade.c
index ba242c33..1e5430bc 100644
--- a/src/microhttpd/test_upgrade.c
+++ b/src/microhttpd/test_upgrade.c
@@ -772,7 +772,8 @@ send_all (struct wr_socket *sock,
772 len - off); 772 len - off);
773 if (0 > ret) 773 if (0 > ret)
774 { 774 {
775 if (MHD_SCKT_ERR_IS_EAGAIN_ (MHD_socket_get_error_ ())) 775 if (MHD_SCKT_ERR_IS_EAGAIN_ (MHD_socket_get_error_ ()) ||
776 MHD_SCKT_ERR_IS_EINTR_ (MHD_socket_get_error_ ()))
776 { 777 {
777 ret = 0; 778 ret = 0;
778 continue; 779 continue;
@@ -807,6 +808,8 @@ recv_hdr (struct wr_socket *sock)
807 { 808 {
808 if (MHD_SCKT_ERR_IS_EAGAIN_ (MHD_socket_get_error_ ())) 809 if (MHD_SCKT_ERR_IS_EAGAIN_ (MHD_socket_get_error_ ()))
809 continue; 810 continue;
811 if (MHD_SCKT_ERR_IS_EINTR_ (MHD_socket_get_error_ ()))
812 continue;
810 externalErrorExitDesc ("recv() failed"); 813 externalErrorExitDesc ("recv() failed");
811 } 814 }
812 if (0 == ret) 815 if (0 == ret)
@@ -849,7 +852,8 @@ recv_all (struct wr_socket *sock,
849 len - off); 852 len - off);
850 if (0 > ret) 853 if (0 > ret)
851 { 854 {
852 if (MHD_SCKT_ERR_IS_EAGAIN_ (MHD_socket_get_error_ ())) 855 if (MHD_SCKT_ERR_IS_EAGAIN_ (MHD_socket_get_error_ ()) ||
856 MHD_SCKT_ERR_IS_EINTR_ (MHD_socket_get_error_ ()))
853 { 857 {
854 ret = 0; 858 ret = 0;
855 continue; 859 continue;
@@ -1107,7 +1111,17 @@ run_mhd_select_loop (struct MHD_Daemon *daemon)
1107 &ws, 1111 &ws,
1108 &es, 1112 &es,
1109 &tv)) 1113 &tv))
1110 mhdErrorExitDesc ("MHD_get_fdset() failed"); /* TODO: handle errors */ 1114 {
1115#ifdef MHD_POSIX_SOCKETS
1116 if (EINTR != errno)
1117 externalErrorExitDesc ("Unexpected select() error");
1118#else
1119 if ((WSAEINVAL != WSAGetLastError ()) ||
1120 (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
1121 externalErrorExitDesc ("Unexpected select() error");
1122 Sleep (tv.tv_sec * 1000 + tv.tv_usec / 1000);
1123#endif
1124 }
1111 MHD_run_from_select (daemon, 1125 MHD_run_from_select (daemon,
1112 &rs, 1126 &rs,
1113 &ws, 1127 &ws,