From 45f9cd01f5a4e09e6c7e2223ef464bd615924b44 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 2 Nov 2012 14:45:50 +0100 Subject: libnetworking: Disconnect after mbuf shortage The missing disconnect left the socket in an unusable state. Each send request resulted in an EISCONN error. --- cpukit/libnetworking/netinet/udp_usrreq.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cpukit/libnetworking/netinet/udp_usrreq.c b/cpukit/libnetworking/netinet/udp_usrreq.c index f09531d810..ddd3f3c359 100644 --- a/cpukit/libnetworking/netinet/udp_usrreq.c +++ b/cpukit/libnetworking/netinet/udp_usrreq.c @@ -399,8 +399,11 @@ udp_output(struct inpcb *inp, struct mbuf *m, struct mbuf *addr, M_PREPEND(m, sizeof(struct udpiphdr), M_DONTWAIT); if (m == 0) { error = ENOBUFS; - if (addr) + if (addr) { + in_pcbdisconnect(inp); + inp->inp_laddr = laddr; splx(s); + } goto release; } -- cgit v1.2.3