]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/kern/uipc_socket2.c
xnu-792.24.17.tar.gz
[apple/xnu.git] / bsd / kern / uipc_socket2.c
index a9287124fcc6501a39e970e17e7fec05e0040b57..51f753938da5b5a3813b41bfed4210711c93ddb5 100644 (file)
@@ -288,6 +288,12 @@ sonewconn_internal(head, connstatus)
        so->so_uid = head->so_uid;
        so->so_usecount = 1;
 
+#ifdef __APPLE__
+       so->so_rcv.sb_flags |= SB_RECV; /* XXX */
+       so->so_rcv.sb_so = so->so_snd.sb_so = so;
+       TAILQ_INIT(&so->so_evlist);
+#endif
+
        if (soreserve(so, head->so_snd.sb_hiwat, head->so_rcv.sb_hiwat)) {
                sflt_termsock(so);
                sodealloc(so);
@@ -321,11 +327,8 @@ sonewconn_internal(head, connstatus)
                head->so_incqlen++;
        }
        head->so_qlen++;
-#ifdef __APPLE__
-       so->so_rcv.sb_flags |= SB_RECV; /* XXX */
-       so->so_rcv.sb_so = so->so_snd.sb_so = so;
-       TAILQ_INIT(&so->so_evlist);
 
+#ifdef __APPLE__
         /* Attach socket filters for this protocol */
         sflt_initsock(so);
 #endif
@@ -1453,9 +1456,14 @@ sbfree(struct sockbuf *sb, struct mbuf *m)
 int
 sblock(struct sockbuf *sb, int wf)
 {
-       return(sb->sb_flags & SB_LOCK ? 
-               ((wf == M_WAIT) ? sb_lock(sb) : EWOULDBLOCK) : 
-               (sb->sb_flags |= SB_LOCK), 0);
+       int error = 0;
+
+       if (sb->sb_flags & SB_LOCK)
+               error = (wf == M_WAIT) ? sb_lock(sb) : EWOULDBLOCK;
+       else
+               sb->sb_flags |= SB_LOCK;
+
+       return (error);
 }
 
 /* release lock on sockbuf sb */