[Type] BugFix
[Module]
[Priority]
[CQ#]
[Redmine#]
[Problem]
[Cause]
[Solution]
[TestCase]
\r
#ifdef _WIN32\r
#include <winsock.h>\r
+#define socklen_t int\r
#else\r
#include <netinet/in.h>\r
#include <sys/ioctl.h>\r
static void mloop_evcb_recv(struct mloop_evsock *ev)\r
{\r
struct mloop_evpack pack;\r
- int ret = read(ev->sockno, (void *)&pack, sizeof(pack));\r
+ int ret;\r
+\r
+ do {\r
+ ret = recv(ev->sockno, (void *)&pack, sizeof(pack), 0);\r
+#ifdef _WIN32\r
+ } while (ret == -1 && WSAGetLastError() == WSAEINTR);\r
+#else\r
+ } while (ret == -1 && errno == EINTR);\r
+#endif // _WIN32\r
+\r
+ if (ret == -1 ) {\r
+ return;\r
+ }\r
\r
if (ret == 0 ) {\r
return;\r