From 1df72c0afe2d008500758a369a634f3d9feb6558 Mon Sep 17 00:00:00 2001 From: zixun Date: Thu, 5 Jul 2018 18:35:43 +0800 Subject: [PATCH] fix kqueue eof event --- skynet-src/socket_epoll.h | 1 + skynet-src/socket_kqueue.h | 6 ++++-- skynet-src/socket_poll.h | 1 + skynet-src/socket_server.c | 4 ++++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/skynet-src/socket_epoll.h b/skynet-src/socket_epoll.h index cd1f9018..58a26afd 100644 --- a/skynet-src/socket_epoll.h +++ b/skynet-src/socket_epoll.h @@ -60,6 +60,7 @@ sp_wait(int efd, struct event *e, int max) { e[i].write = (flag & EPOLLOUT) != 0; e[i].read = (flag & (EPOLLIN | EPOLLHUP)) != 0; e[i].error = (flag & EPOLLERR) != 0; + e[i].eof = false; } return n; diff --git a/skynet-src/socket_kqueue.h b/skynet-src/socket_kqueue.h index 8aa31203..fc282a9a 100644 --- a/skynet-src/socket_kqueue.h +++ b/skynet-src/socket_kqueue.h @@ -73,9 +73,11 @@ sp_wait(int kfd, struct event *e, int max) { for (i=0;idata = (char *)err; return SOCKET_ERR; } + if(e->eof) { + force_close(ss, s, &l, result); + return SOCKET_CLOSE; + } break; } }