aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGleb Smirnoff <glebius@FreeBSD.org>2005-09-12 14:11:11 +0000
committerGleb Smirnoff <glebius@FreeBSD.org>2005-09-12 14:11:11 +0000
commit723359f73ab23a4574cd62081791610cc1dd3119 (patch)
tree99a0c883d19e41e7e50533da39c5f4f1d28d9ae4
parent56c6364bcae90f4a2e98668d3e14fa2ac5efef62 (diff)
downloadsrc-723359f73ab23a4574cd62081791610cc1dd3119.tar.gz
src-723359f73ab23a4574cd62081791610cc1dd3119.zip
When message can't fit into socket receive buffer return ENOBUFS
to userland program instead of letting it wait until end of days. PR: kern/85907
Notes
Notes: svn path=/head/; revision=150042
-rw-r--r--sys/netgraph/ng_socket.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/netgraph/ng_socket.c b/sys/netgraph/ng_socket.c
index dd39259de4a9..2326aa315153 100644
--- a/sys/netgraph/ng_socket.c
+++ b/sys/netgraph/ng_socket.c
@@ -814,6 +814,7 @@ ship_msg(struct ngpcb *pcbp, struct ng_mesg *msg, struct sockaddr_ng *addr)
struct socket *const so = pcbp->ng_socket;
struct mbuf *mdata;
int msglen;
+ int error = 0;
/* Copy the message itself into an mbuf chain */
msglen = sizeof(struct ng_mesg) + msg->header.arglen;
@@ -833,10 +834,10 @@ ship_msg(struct ngpcb *pcbp, struct ng_mesg *msg, struct sockaddr_ng *addr)
(struct sockaddr *) addr, mdata, NULL) == 0) {
TRAP_ERROR;
m_freem(mdata);
- return (ENOBUFS);
+ error = so->so_error = ENOBUFS;
}
sorwakeup(so);
- return (0);
+ return (error);
}
/***************************************************************