can't write to listen fd, See issue #294

This commit is contained in:
Cloud Wu
2015-06-25 19:28:42 +08:00
parent 2fa130997f
commit 728abeaeb8

View File

@@ -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;
}
}