In the net_socket_fd_init(), the 'default' case and comment is odd. If @fd really was a pty, getsockopt() would fail with ENOTSOCK. If @fd was a socket, but neither SOCK_DGRAM nor SOCK_STREAM. It should not be treated as if it was SOCK_STREAM.
If there is a genuine reason to support something like SOCK_RAW, it should be explicitly handled. So, drop the 'default' case since it is broken already. Cc: jasow...@redhat.com Cc: arm...@redhat.com Cc: berra...@redhat.com Cc: arm...@redhat.com Suggested-by: Markus Armbruster <arm...@redhat.com> Suggested-by: Daniel P. Berrange <berra...@redhat.com> Signed-off-by: Mao Zhongyi <maozy.f...@cn.fujitsu.com> --- net/socket.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net/socket.c b/net/socket.c index dcae1ae..a503cfe 100644 --- a/net/socket.c +++ b/net/socket.c @@ -449,9 +449,9 @@ static NetSocketState *net_socket_fd_init(NetClientState *peer, case SOCK_STREAM: return net_socket_fd_init_stream(peer, model, name, fd, is_connected); default: - /* who knows ... this could be a eg. a pty, do warn and continue as stream */ - fprintf(stderr, "qemu: warning: socket type=%d for fd=%d is not SOCK_DGRAM or SOCK_STREAM\n", so_type, fd); - return net_socket_fd_init_stream(peer, model, name, fd, is_connected); + fprintf(stderr, "qemu: error: socket type=%d for fd=%d is not" + " SOCK_DGRAM or SOCK_STREAM\n", so_type, fd); + closesocket(fd); } return NULL; } -- 2.9.3