diff options
| author | Robert Watson <rwatson@FreeBSD.org> | 2007-11-27 12:22:17 +0000 |
|---|---|---|
| committer | Robert Watson <rwatson@FreeBSD.org> | 2007-11-27 12:22:17 +0000 |
| commit | 041bb79bd6d5abeb877b36c70a2a55852d2fed48 (patch) | |
| tree | c72bbfe8a2e4a4c399893e4f499525b88d452548 /sys/netinet | |
| parent | e74431486a8f4cd7753d682968a0c0bc038b2628 (diff) | |
Notes
Diffstat (limited to 'sys/netinet')
| -rw-r--r-- | sys/netinet/tcp_subr.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index 64d18359bfff..ebf65721d522 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -2049,12 +2049,16 @@ sysctl_drop(SYSCTL_HANDLER_ARGS) tw = intotw(inp); if (tw != NULL) tcp_twclose(tw, 0); + else + INP_UNLOCK(inp); } else if (!(inp->inp_vflag & INP_DROPPED) && !(inp->inp_socket->so_options & SO_ACCEPTCONN)) { tp = intotcpcb(inp); - tcp_drop(tp, ECONNABORTED); - } - INP_UNLOCK(inp); + tp = tcp_drop(tp, ECONNABORTED); + if (tp != NULL) + INP_UNLOCK(inp); + } else + INP_UNLOCK(inp); } else error = ESRCH; INP_INFO_WUNLOCK(&tcbinfo); |
