From 728abeaeb841ec62cf60e2d9e3ce845ba840e651 Mon Sep 17 00:00:00 2001 From: Cloud Wu Date: Thu, 25 Jun 2015 19:28:42 +0800 Subject: [PATCH] can't write to listen fd, See issue #294 --- skynet-src/socket_server.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/skynet-src/socket_server.c b/skynet-src/socket_server.c index 7c287b90..1b480da7 100644 --- a/skynet-src/socket_server.c +++ b/skynet-src/socket_server.c @@ -687,7 +687,11 @@ send_socket(struct socket_server *ss, struct request_send * request, struct sock so.free_func(request->buffer); return -1; } - assert(s->type != SOCKET_TYPE_PLISTEN && s->type != SOCKET_TYPE_LISTEN); + if (s->type == SOCKET_TYPE_PLISTEN || s->type == SOCKET_TYPE_LISTEN) { + fprintf(stderr, "socket-server: write to listen fd %d.\n", id); + so.free_func(request->buffer); + return -1; + } if (send_buffer_empty(s) && s->type == SOCKET_TYPE_CONNECTED) { if (s->protocol == PROTOCOL_TCP) { int n = write(s->fd, so.buffer, so.sz); @@ -700,6 +704,7 @@ send_socket(struct socket_server *ss, struct request_send * request, struct sock default: fprintf(stderr, "socket-server: write to %d (fd=%d) error :%s.\n",id,s->fd,strerror(errno)); force_close(ss,s,result); + so.free_func(request->buffer); return SOCKET_CLOSE; } }