PERFORCE change 43987 for review

Sam Leffler sam at FreeBSD.org
Tue Dec 16 15:32:06 PST 2003


http://perforce.freebsd.org/chv.cgi?CH=43987

Change 43987 by sam at sam_ebb on 2003/12/16 15:31:05

	o correct exit case in soreceive to unlock the socket buffer
	o don't sbunlock in soreceive when restarting when no data
	  has been transferred (note this is correct as previously
	  we unlocked the sockbuf whenever we blocked but now we keep
	  the sockbuf locked for the duration of a receive which means
	  receives on a socket are single-threaded)

Affected files ...

.. //depot/projects/netperf+sockets/sys/kern/uipc_socket.c#6 edit

Differences ...

==== //depot/projects/netperf+sockets/sys/kern/uipc_socket.c#6 (text+ko) ====

@@ -889,7 +889,7 @@
 		SBLASTMBUFCHK(&so->so_rcv);
 		error = sbwait(&so->so_rcv);
 		if (error)
-			goto out;
+			goto release;
 		goto restart;
 	}
 dontblock:
@@ -1131,10 +1131,8 @@
 			(*pr->pr_usrreqs->pru_rcvd)(so, flags);
 	}
 	if (orig_resid == uio->uio_resid && orig_resid &&
-	    (flags & MSG_EOR) == 0 && (so->so_state & SS_CANTRCVMORE) == 0) {
-		sbunlock(&so->so_rcv);
+	    (flags & MSG_EOR) == 0 && (so->so_state & SS_CANTRCVMORE) == 0)
 		goto restart;
-	}
 
 	if (flagsp)
 		*flagsp |= flags;


More information about the p4-projects mailing list