aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet
diff options
context:
space:
mode:
authorGleb Smirnoff <glebius@FreeBSD.org>2026-04-12 18:30:44 +0000
committerGleb Smirnoff <glebius@FreeBSD.org>2026-04-12 18:30:44 +0000
commit202370905f11be4e2c7afa18e73d374204fda08e (patch)
treec0cb3cff1a8adabfac60be3c2954cc001a8ce4da /sys/netinet
parent817e6995a19cb6f35851d0191bb1099a73d98bb9 (diff)
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/in_pcb.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/netinet/in_pcb.c b/sys/netinet/in_pcb.c
index a997c643e8be..98421a7f2232 100644
--- a/sys/netinet/in_pcb.c
+++ b/sys/netinet/in_pcb.c
@@ -1433,11 +1433,13 @@ in_pcbdisconnect(struct inpcb *inp)
in_pcbremhash_locked(inp);
- /* See the comment in in_pcbinshash(). */
- inp->inp_smr = smr_advance(inp->inp_pcbinfo->ipi_smr);
- inp->inp_laddr.s_addr = INADDR_ANY;
- inp->inp_faddr.s_addr = INADDR_ANY;
- inp->inp_fport = 0;
+ if ((inp->inp_socket->so_proto->pr_flags & PR_CONNREQUIRED) == 0) {
+ /* See the comment in in_pcbinshash(). */
+ inp->inp_smr = smr_advance(inp->inp_pcbinfo->ipi_smr);
+ inp->inp_laddr.s_addr = INADDR_ANY;
+ inp->inp_faddr.s_addr = INADDR_ANY;
+ inp->inp_fport = 0;
+ }
}
#endif /* INET */