From 8ad6622936ddd234b43368ae602eb49012613a94 Mon Sep 17 00:00:00 2001 From: Cloud Wu Date: Tue, 6 Apr 2021 15:47:32 +0800 Subject: [PATCH] halfclose_read should call before force_close --- skynet-src/socket_server.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/skynet-src/socket_server.c b/skynet-src/socket_server.c index 47d8b8b0..90222313 100644 --- a/skynet-src/socket_server.c +++ b/skynet-src/socket_server.c @@ -1749,16 +1749,12 @@ socket_server_poll(struct socket_server *ss, struct socket_message * result, int result->data = (char *)err; return SOCKET_ERR; } - if(e->eof) { + if (e->eof) { // For epoll (at least), FIN packets are exchanged both ways. // See: https://stackoverflow.com/questions/52976152/tcp-when-is-epollhup-generated + int r = halfclose_read(s) ? -1 : SOCKET_CLOSE; force_close(ss, s, &l, result); - if (halfclose_read(s)) { - // Already rasied SOCKET_CLOSE - return -1; - } else { - return SOCKET_CLOSE; - } + return r; } break; }