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 retrieving revision 1.6.2.3 retrieving revision 1.7 diff -u -p -r1.6.2.3 -r1.7 --- src/sys/kern/uipc_socket.c 1993/12/10 13:16:44 1.6.2.3 +++ src/sys/kern/uipc_socket.c 1993/10/26 22:36:25 1.7 @@ -31,24 +31,22 @@ * SUCH DAMAGE. * * from: @(#)uipc_socket.c 7.28 (Berkeley) 5/4/91 - * $Id: uipc_socket.c,v 1.6.2.3 1993/12/10 13:16:44 pk Exp $ + * $Id: uipc_socket.c,v 1.7 1993/10/26 22:36:25 cgd Exp $ */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include +#include "param.h" +#include "systm.h" +#include "proc.h" +#include "file.h" +#include "malloc.h" +#include "mbuf.h" +#include "domain.h" +#include "kernel.h" +#include "select.h" +#include "protosw.h" +#include "socket.h" +#include "socketvar.h" +#include "resourcevar.h" /* * Socket operation routines. @@ -91,10 +89,6 @@ socreate(dom, aso, type, proto) sofree(so); return (error); } -#ifdef COMPAT_SUNOS - if (p->p_emul == EMUL_SUNOS && type == SOCK_DGRAM) - so->so_options |= SO_BROADCAST; -#endif *aso = so; return (0); } @@ -415,10 +409,21 @@ restart: if ((m->m_flags & M_EXT) == 0) goto nopages; mlen = MCLBYTES; - len = min(min(mlen, resid), space); +#ifdef MAPPED_MBUFS + len = min(MCLBYTES, resid); +#else + if (atomic && top == 0) { + len = min(MCLBYTES - max_hdr, resid); + m->m_data += max_hdr; + } else + len = min(MCLBYTES, resid); +#endif + len = min(len, space); + space -= len; } else { nopages: len = min(min(mlen, resid), space); + space -= len; /* * For datagram protocols, leave room * for protocol headers in first mbuf. @@ -426,7 +431,6 @@ nopages: if (atomic && top == 0 && len < mlen) MH_ALIGN(m, len); } - space -= len; error = uiomove(mtod(m, caddr_t), (int)len, uio); resid = uio->uio_resid; m->m_len = len;