Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/kern/uipc_socket.c,v rcsdiff: /ftp/cvs/cvsroot/src/sys/kern/uipc_socket.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.48.2.6 retrieving revision 1.56.4.1 diff -u -p -r1.48.2.6 -r1.56.4.1 --- src/sys/kern/uipc_socket.c 2001/04/21 17:46:31 1.48.2.6 +++ src/sys/kern/uipc_socket.c 2001/10/01 12:46:57 1.56.4.1 @@ -1,4 +1,4 @@ -/* $NetBSD: uipc_socket.c,v 1.48.2.6 2001/04/21 17:46:31 bouyer Exp $ */ +/* $NetBSD: uipc_socket.c,v 1.56.4.1 2001/10/01 12:46:57 fvdl Exp $ */ /* * Copyright (c) 1982, 1986, 1988, 1990, 1993 @@ -353,8 +353,8 @@ sosend(struct socket *so, struct mbuf *a { struct proc *p; struct mbuf **mp, *m; - long space, len, resid; - int clen, error, s, dontroute, mlen, atomic; + long space, len, resid, clen, mlen; + int error, s, dontroute, atomic; p = curproc; /* XXX */ clen = 0; @@ -447,19 +447,19 @@ sosend(struct socket *so, struct mbuf *a goto nopages; mlen = MCLBYTES; #ifdef MAPPED_MBUFS - len = min(MCLBYTES, resid); + len = lmin(MCLBYTES, resid); #else if (atomic && top == 0) { - len = min(MCLBYTES - max_hdr, + len = lmin(MCLBYTES - max_hdr, resid); m->m_data += max_hdr; } else - len = min(MCLBYTES, resid); + len = lmin(MCLBYTES, resid); #endif space -= len; } else { nopages: - len = min(min(mlen, resid), space); + len = lmin(lmin(mlen, resid), space); space -= len; /* * For datagram protocols, leave room @@ -736,6 +736,8 @@ soreceive(struct socket *so, struct mbuf splx(s); error = uiomove(mtod(m, caddr_t) + moff, (int)len, uio); s = splsoftnet(); + if (error) + goto release; } else uio->uio_resid -= len; if (len == m->m_len - moff) {