aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/netinet/udp_usrreq.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c
index 9c541dba85244..47d12f852b2cc 100644
--- a/sys/netinet/udp_usrreq.c
+++ b/sys/netinet/udp_usrreq.c
@@ -837,7 +837,7 @@ udp_output(inp, m, addr, control, td)
M_PREPEND(m, sizeof(struct udpiphdr), M_DONTWAIT);
if (m == 0) {
error = ENOBUFS;
- goto release;
+ goto disconnect;
}
/*
@@ -879,6 +879,12 @@ udp_output(inp, m, addr, control, td)
inp->inp_moptions, inp);
return (error);
+disconnect:
+ if (addr) {
+ in_pcbdisconnect(inp);
+ inp->inp_laddr = laddr;
+ }
+
release:
m_freem(m);
return (error);