diff options
author | Gleb Smirnoff <glebius@FreeBSD.org> | 2005-09-12 14:11:11 +0000 |
---|---|---|
committer | Gleb Smirnoff <glebius@FreeBSD.org> | 2005-09-12 14:11:11 +0000 |
commit | 723359f73ab23a4574cd62081791610cc1dd3119 (patch) | |
tree | 99a0c883d19e41e7e50533da39c5f4f1d28d9ae4 | |
parent | 56c6364bcae90f4a2e98668d3e14fa2ac5efef62 (diff) | |
download | src-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.c | 5 |
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); } /*************************************************************** |