summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorblambert <blambert@openbsd.org>2011-04-03 16:09:09 +0000
committerblambert <blambert@openbsd.org>2011-04-03 16:09:09 +0000
commit2f7bc713767d689946e30da615ba6680403d14fd (patch)
tree4e7db8e55eb402e7bd417712db717f22ff2086a6
parentdon't rely on implict net/route.h inclusion via pf, claudio ok (diff)
downloadwireguard-openbsd-2f7bc713767d689946e30da615ba6680403d14fd.tar.xz
wireguard-openbsd-2f7bc713767d689946e30da615ba6680403d14fd.zip
Don't attempt to enqueue mbufs on sockets marked as SS_CANTRCVMORE, as
was done earlier for routing sockets. ok claudio@
-rw-r--r--sys/net/raw_usrreq.c4
-rw-r--r--sys/netinet/raw_ip.c4
-rw-r--r--sys/netinet/udp_usrreq.c4
3 files changed, 9 insertions, 3 deletions
diff --git a/sys/net/raw_usrreq.c b/sys/net/raw_usrreq.c
index b9cbdb5f7b1..d3ba8015ec9 100644
--- a/sys/net/raw_usrreq.c
+++ b/sys/net/raw_usrreq.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: raw_usrreq.c,v 1.12 2009/11/13 20:54:05 claudio Exp $ */
+/* $OpenBSD: raw_usrreq.c,v 1.13 2011/04/03 16:09:09 blambert Exp $ */
/* $NetBSD: raw_usrreq.c,v 1.11 1996/02/13 22:00:43 christos Exp $ */
/*
@@ -85,6 +85,8 @@ raw_input(struct mbuf *m0, ...)
last = 0;
LIST_FOREACH(rp, &rawcb, rcb_list) {
+ if (rp->rcb_socket->so_state & SS_CANTRCVMORE)
+ continue;
if (rp->rcb_proto.sp_family != proto->sp_family)
continue;
if (rp->rcb_proto.sp_protocol &&
diff --git a/sys/netinet/raw_ip.c b/sys/netinet/raw_ip.c
index ee21b1da104..6cce2c68375 100644
--- a/sys/netinet/raw_ip.c
+++ b/sys/netinet/raw_ip.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: raw_ip.c,v 1.50 2010/09/08 08:34:42 claudio Exp $ */
+/* $OpenBSD: raw_ip.c,v 1.51 2011/04/03 16:09:09 blambert Exp $ */
/* $NetBSD: raw_ip.c,v 1.25 1996/02/18 18:58:33 christos Exp $ */
/*
@@ -128,6 +128,8 @@ rip_input(struct mbuf *m, ...)
ripsrc.sin_addr = ip->ip_src;
CIRCLEQ_FOREACH(inp, &rawcbtable.inpt_queue, inp_queue) {
+ if (inp->inp_socket->so_state & SS_CANTRCVMORE)
+ continue;
#ifdef INET6
if (inp->inp_flags & INP_IPV6)
continue;
diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c
index 1fa7d064d26..6db0e712d09 100644
--- a/sys/netinet/udp_usrreq.c
+++ b/sys/netinet/udp_usrreq.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: udp_usrreq.c,v 1.138 2010/09/24 14:50:30 hsuenaga Exp $ */
+/* $OpenBSD: udp_usrreq.c,v 1.139 2011/04/03 16:09:09 blambert Exp $ */
/* $NetBSD: udp_usrreq.c,v 1.28 1996/03/16 23:54:03 christos Exp $ */
/*
@@ -442,6 +442,8 @@ udp_input(struct mbuf *m, ...)
*/
last = NULL;
CIRCLEQ_FOREACH(inp, &udbtable.inpt_queue, inp_queue) {
+ if (inp->inp_socket->so_state & SS_CANTRCVMORE)
+ continue;
#ifdef INET6
/* don't accept it if AF does not match */
if (ip6 && !(inp->inp_flags & INP_IPV6))