Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/netkey on EAGAIN, set kp_queue again for the next wakeup...



details:   https://anonhg.NetBSD.org/src/rev/4cde6c460a25
branches:  trunk
changeset: 567084:4cde6c460a25
user:      itojun <itojun%NetBSD.org@localhost>
date:      Mon May 31 09:06:36 2004 +0000

description:
on EAGAIN, set kp_queue again for the next wakeup.  pointed out by yamt

diffstat:

 sys/netkey/keysock.c |  9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diffs (32 lines):

diff -r d8221623a2fe -r 4cde6c460a25 sys/netkey/keysock.c
--- a/sys/netkey/keysock.c      Mon May 31 09:05:10 2004 +0000
+++ b/sys/netkey/keysock.c      Mon May 31 09:06:36 2004 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: keysock.c,v 1.31 2004/05/31 04:29:01 itojun Exp $      */
+/*     $NetBSD: keysock.c,v 1.32 2004/05/31 09:06:36 itojun Exp $      */
 /*     $KAME: keysock.c,v 1.32 2003/08/22 05:45:08 itojun Exp $        */
 
 /*
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: keysock.c,v 1.31 2004/05/31 04:29:01 itojun Exp $");
+__KERNEL_RCSID(0, "$NetBSD: keysock.c,v 1.32 2004/05/31 09:06:36 itojun Exp $");
 
 #include "opt_inet.h"
 
@@ -270,9 +270,12 @@
                if (canwait &&
                    sbspace(&rp->rcb_socket->so_rcv) < m->m_pkthdr.len) {
                        error = EAGAIN;
-                       continue;
+                       kp->kp_queue = m;
+                       break;
                }
 
+               m->m_nextpkt = NULL;
+
                if (!sbappendaddr(&rp->rcb_socket->so_rcv,
                    (struct sockaddr *)&key_src, m, NULL)) {
                        pfkeystat.in_nomem++;



Home | Main Index | Thread Index | Old Index