new sblock, sbwait (unwind on signal)
authorMike Karels <karels@ucbvax.Berkeley.EDU>
Thu, 5 Apr 1990 12:19:05 +0000 (04:19 -0800)
committerMike Karels <karels@ucbvax.Berkeley.EDU>
Thu, 5 Apr 1990 12:19:05 +0000 (04:19 -0800)
SCCS-vsn: sys/nfs/nfs_socket.c 7.10

usr/src/sys/nfs/nfs_socket.c

index f9c3e2f..7a32f03 100644 (file)
@@ -17,7 +17,7 @@
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- *     @(#)nfs_socket.c        7.9 (Berkeley) %G%
+ *     @(#)nfs_socket.c        7.10 (Berkeley) %G%
  */
 
 /*
  */
 
 /*
@@ -333,7 +333,8 @@ nfs_dgreceive(so, msk, mtch, aname, mp)
                *aname = 0;
 
        for (;;) {
                *aname = 0;
 
        for (;;) {
-               sblock(&so->so_rcv);
+               if (error = sblock(&so->so_rcv))
+                       return (error);
                s = splnet();
 
                if (so->so_rcv.sb_cc == 0) {
                s = splnet();
 
                if (so->so_rcv.sb_cc == 0) {
@@ -342,8 +343,10 @@ nfs_dgreceive(so, msk, mtch, aname, mp)
                                break;
                        }
                        sbunlock(&so->so_rcv);
                                break;
                        }
                        sbunlock(&so->so_rcv);
-                       sbwait(&so->so_rcv);
+                       error = sbwait(&so->so_rcv);
                        splx(s);
                        splx(s);
+                       if (error)
+                               return (error);
                        continue;
                }
                m = so->so_rcv.sb_mb;
                        continue;
                }
                m = so->so_rcv.sb_mb;