last line of while not reached; shut up mips compiler (from Ralph Campbell);
authorKeith Sklower <sklower@ucbvax.Berkeley.EDU>
Sat, 7 Sep 1991 08:03:32 +0000 (00:03 -0800)
committerKeith Sklower <sklower@ucbvax.Berkeley.EDU>
Sat, 7 Sep 1991 08:03:32 +0000 (00:03 -0800)
make sosetopt inform protocols of SOL_SOCKET options being changed.

SCCS-vsn: sys/kern/uipc_socket.c 7.30

usr/src/sys/kern/uipc_socket.c

index 30f5c21..066f318 100644 (file)
@@ -4,7 +4,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)uipc_socket.c       7.29 (Berkeley) %G%
+ *     @(#)uipc_socket.c       7.30 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -501,7 +501,7 @@ restart:
         * we have to do the receive in sections, and thus risk returning
         * a short count if a timeout or signal occurs after we start.
         */
         * we have to do the receive in sections, and thus risk returning
         * a short count if a timeout or signal occurs after we start.
         */
-       while (m == 0 || so->so_rcv.sb_cc < uio->uio_resid &&
+       if (m == 0 || so->so_rcv.sb_cc < uio->uio_resid &&
            (so->so_rcv.sb_cc < so->so_rcv.sb_lowat ||
            ((flags & MSG_WAITALL) && uio->uio_resid <= so->so_rcv.sb_hiwat)))
                if (m && (m->m_nextpkt || (m->m_flags & M_EOR) ||
            (so->so_rcv.sb_cc < so->so_rcv.sb_lowat ||
            ((flags & MSG_WAITALL) && uio->uio_resid <= so->so_rcv.sb_hiwat)))
                if (m && (m->m_nextpkt || (m->m_flags & M_EOR) ||
@@ -513,7 +513,7 @@ restart:
 #endif
                if (so->so_error) {
                        if (m)
 #endif
                if (so->so_error) {
                        if (m)
-                               break;
+                               goto dontblock;
                        error = so->so_error;
                        if ((flags & MSG_PEEK) == 0)
                                so->so_error = 0;
                        error = so->so_error;
                        if ((flags & MSG_PEEK) == 0)
                                so->so_error = 0;
@@ -521,7 +521,7 @@ restart:
                }
                if (so->so_state & SS_CANTRCVMORE) {
                        if (m)
                }
                if (so->so_state & SS_CANTRCVMORE) {
                        if (m)
-                               break;
+                               goto dontblock;
                        else
                                goto release;
                }
                        else
                                goto release;
                }
@@ -857,6 +857,7 @@ sosetopt(so, level, optname, m0)
                        error = ENOPROTOOPT;
                        break;
                }
                        error = ENOPROTOOPT;
                        break;
                }
+               m = 0;
                if (error == 0 && so->so_proto && so->so_proto->pr_ctloutput)
                        (void) ((*so->so_proto->pr_ctloutput)
                                  (PRCO_SETOPT, so, level, optname, &m0));
                if (error == 0 && so->so_proto && so->so_proto->pr_ctloutput)
                        (void) ((*so->so_proto->pr_ctloutput)
                                  (PRCO_SETOPT, so, level, optname, &m0));