From 56c70dc7ace1fb668debc254b30adddd711f7e48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=90=E7=86=8F?= Date: Thu, 3 Dec 2020 15:47:51 +0800 Subject: [PATCH] fix socket half close (#1263) Co-authored-by: zixun --- skynet-src/socket_server.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/skynet-src/socket_server.c b/skynet-src/socket_server.c index 6fd975a9..c3a221d1 100644 --- a/skynet-src/socket_server.c +++ b/skynet-src/socket_server.c @@ -1357,8 +1357,14 @@ forward_message_tcp(struct socket_server *ss, struct socket *s, struct socket_lo } if (n==0) { FREE(buffer); - force_close(ss, s, l, result); - return SOCKET_CLOSE; + if (nomore_sending_data(s)) { + force_close(ss,s,l,result); + return SOCKET_CLOSE; + } else { + s->type = SOCKET_TYPE_HALFCLOSE; + shutdown(s->fd, SHUT_RD); + return -1; + } } if (s->type == SOCKET_TYPE_HALFCLOSE) {