From de5833ad9681cc7f39b2f98eb05fdd4af43455f0 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Mon, 5 Aug 2013 23:11:24 +0800 Subject: [PATCH] socket: SO_LINGER only affects sockets that have been connected --- sys/kern/uipc_socket.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index 856dd1ff7a..16b0d39c53 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -414,7 +414,8 @@ soclose(struct socket *so, int fflag) funsetown(&so->so_sigio); if (!use_soclose_fast || (so->so_proto->pr_flags & PR_SYNC_PORT) || - (so->so_options & SO_LINGER)) { + ((so->so_state & SS_ISCONNECTED) && + (so->so_options & SO_LINGER))) { error = soclose_sync(so, fflag); } else { soclose_fast(so); -- 2.41.0