in attach, don't set sockbuf limits if set (from sonewconn); lint
authorMike Karels <karels@ucbvax.Berkeley.EDU>
Thu, 26 May 1988 09:10:52 +0000 (01:10 -0800)
committerMike Karels <karels@ucbvax.Berkeley.EDU>
Thu, 26 May 1988 09:10:52 +0000 (01:10 -0800)
SCCS-vsn: sys/kern/uipc_usrreq.c 7.6
SCCS-vsn: sys/netinet/tcp_usrreq.c 7.9
SCCS-vsn: sys/netns/spp_usrreq.c 7.7

usr/src/sys/kern/uipc_usrreq.c
usr/src/sys/netinet/tcp_usrreq.c
usr/src/sys/netns/spp_usrreq.c

index 1e34f96..252a458 100644 (file)
@@ -9,7 +9,7 @@
  * software without specific prior written permission. This software
  * is provided ``as is'' without express or implied warranty.
  *
  * software without specific prior written permission. This software
  * is provided ``as is'' without express or implied warranty.
  *
- *     @(#)uipc_usrreq.c       7.5 (Berkeley) %G%
+ *     @(#)uipc_usrreq.c       7.6 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -282,10 +282,10 @@ release:
  * be large enough for at least one max-size datagram plus address.
  */
 #define        PIPSIZ  4096
  * be large enough for at least one max-size datagram plus address.
  */
 #define        PIPSIZ  4096
-int    unpst_sendspace = PIPSIZ;
-int    unpst_recvspace = PIPSIZ;
-int    unpdg_sendspace = 2*1024;       /* really max datagram size */
-int    unpdg_recvspace = 4*1024;
+u_long unpst_sendspace = PIPSIZ;
+u_long unpst_recvspace = PIPSIZ;
+u_long unpdg_sendspace = 2*1024;       /* really max datagram size */
+u_long unpdg_recvspace = 4*1024;
 
 int    unp_rights;                     /* file descriptors in flight */
 
 
 int    unp_rights;                     /* file descriptors in flight */
 
@@ -296,18 +296,20 @@ unp_attach(so)
        register struct unpcb *unp;
        int error;
        
        register struct unpcb *unp;
        int error;
        
-       switch (so->so_type) {
+       if (so->so_snd.sb_hiwat == 0 || so->so_rcv.sb_hiwat == 0) {
+               switch (so->so_type) {
 
 
-       case SOCK_STREAM:
-               error = soreserve(so, unpst_sendspace, unpst_recvspace);
-               break;
+               case SOCK_STREAM:
+                       error = soreserve(so, unpst_sendspace, unpst_recvspace);
+                       break;
 
 
-       case SOCK_DGRAM:
-               error = soreserve(so, unpdg_sendspace, unpdg_recvspace);
-               break;
+               case SOCK_DGRAM:
+                       error = soreserve(so, unpdg_sendspace, unpdg_recvspace);
+                       break;
+               }
+               if (error)
+                       return (error);
        }
        }
-       if (error)
-               return (error);
        m = m_getclr(M_DONTWAIT, MT_PCB);
        if (m == NULL)
                return (ENOBUFS);
        m = m_getclr(M_DONTWAIT, MT_PCB);
        if (m == NULL)
                return (ENOBUFS);
index 091d605..dd0a668 100644 (file)
@@ -9,7 +9,7 @@
  * software without specific prior written permission. This software
  * is provided ``as is'' without express or implied warranty.
  *
  * software without specific prior written permission. This software
  * is provided ``as is'' without express or implied warranty.
  *
- *     @(#)tcp_usrreq.c        7.7.1.2 (Berkeley) %G%
+ *     @(#)tcp_usrreq.c        7.9 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -376,8 +376,8 @@ tcp_ctloutput(op, so, level, optname, mp)
 }
 #endif
 
 }
 #endif
 
-int    tcp_sendspace = 1024*4;
-int    tcp_recvspace = 1024*4;
+u_long tcp_sendspace = 1024*4;
+u_long tcp_recvspace = 1024*4;
 /*
  * Attach TCP protocol to socket, allocating
  * internet protocol control block, tcp control block,
 /*
  * Attach TCP protocol to socket, allocating
  * internet protocol control block, tcp control block,
@@ -390,9 +390,11 @@ tcp_attach(so)
        struct inpcb *inp;
        int error;
 
        struct inpcb *inp;
        int error;
 
-       error = soreserve(so, tcp_sendspace, tcp_recvspace);
-       if (error)
-               return (error);
+       if (so->so_snd.sb_hiwat == 0 || so->so_rcv.sb_hiwat == 0) {
+               error = soreserve(so, tcp_sendspace, tcp_recvspace);
+               if (error)
+                       return (error);
+       }
        error = in_pcballoc(so, &tcb);
        if (error)
                return (error);
        error = in_pcballoc(so, &tcb);
        if (error)
                return (error);
index 67ebb58..f2e2f89 100644 (file)
@@ -9,7 +9,7 @@
  * software without specific prior written permission. This software
  * is provided ``as is'' without express or implied warranty.
  *
  * software without specific prior written permission. This software
  * is provided ``as is'' without express or implied warranty.
  *
- *      @(#)spp_usrreq.c       7.6 (Berkeley) %G%
+ *      @(#)spp_usrreq.c       7.7 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -91,7 +91,7 @@ spp_input(m, nsp, ifp)
        }
        if (so->so_options & SO_ACCEPTCONN) {
                struct sppcb *ocb = cb;
        }
        if (so->so_options & SO_ACCEPTCONN) {
                struct sppcb *ocb = cb;
-               struct socket *oso = so;
+
                so = sonewconn(so);
                if (so == 0) {
                        goto drop;
                so = sonewconn(so);
                if (so == 0) {
                        goto drop;
@@ -113,10 +113,6 @@ spp_input(m, nsp, ifp)
                cb = nstosppcb(nsp);
                cb->s_mtu = ocb->s_mtu;         /* preserve sockopts */
                cb->s_flags = ocb->s_flags;     /* preserve sockopts */
                cb = nstosppcb(nsp);
                cb->s_mtu = ocb->s_mtu;         /* preserve sockopts */
                cb->s_flags = ocb->s_flags;     /* preserve sockopts */
-               if (so->so_snd.sb_hiwat != oso->so_snd.sb_hiwat) /*XXX*/
-                       sbreserve(&so->so_snd, oso->so_snd.sb_hiwat);
-               if (so->so_rcv.sb_hiwat != oso->so_rcv.sb_hiwat) /*XXX*/
-                       sbreserve(&so->so_rcv, oso->so_rcv.sb_hiwat);
                cb->s_state = TCPS_LISTEN;
        }
 
                cb->s_state = TCPS_LISTEN;
        }
 
@@ -650,7 +646,10 @@ spp_output(cb, m0)
        int len = 0, win, rcv_win;
        short span, off;
        u_short alo;
        int len = 0, win, rcv_win;
        short span, off;
        u_short alo;
-       int error = 0, idle, sendalot;
+       int error = 0, sendalot;
+#ifdef notdef
+       int idle;
+#endif
        struct mbuf *mprev;
        extern int idpcksum;
 
        struct mbuf *mprev;
        extern int idpcksum;
 
@@ -768,7 +767,9 @@ spp_output(cb, m0)
                sbappendrecord(sb, m);
                cb->s_seq++;
        }
                sbappendrecord(sb, m);
                cb->s_seq++;
        }
+#ifdef notdef
        idle = (cb->s_smax == (cb->s_rack - 1));
        idle = (cb->s_smax == (cb->s_rack - 1));
+#endif
 again:
        sendalot = 0;
        off = cb->s_snxt - cb->s_rack;
 again:
        sendalot = 0;
        off = cb->s_snxt - cb->s_rack;
@@ -1212,9 +1213,11 @@ spp_usrreq(so, req, m, nam, rights)
                error = ns_pcballoc(so, &nspcb);
                if (error)
                        break;
                error = ns_pcballoc(so, &nspcb);
                if (error)
                        break;
-               error = soreserve(so, 3072, 3072);
-               if (error)
-                       break;
+               if (so->so_snd.sb_hiwat == 0 || so->so_rcv.sb_hiwat == 0) {
+                       error = soreserve(so, (u_long) 3072, (u_long) 3072);
+                       if (error)
+                               break;
+               }
                nsp = sotonspcb(so);
 
                mm = m_getclr(M_DONTWAIT, MT_PCB);
                nsp = sotonspcb(so);
 
                mm = m_getclr(M_DONTWAIT, MT_PCB);
@@ -1227,7 +1230,7 @@ spp_usrreq(so, req, m, nam, rights)
                cb = mtod(mm, struct sppcb *);
                mm = m_getclr(M_DONTWAIT, MT_HEADER);
                if (mm == NULL) {
                cb = mtod(mm, struct sppcb *);
                mm = m_getclr(M_DONTWAIT, MT_HEADER);
                if (mm == NULL) {
-                       m_free(dtom(m));
+                       (void) m_free(dtom(m));
                        error = ENOBUFS;
                        break;
                }
                        error = ENOBUFS;
                        break;
                }