sync code with last improvements from OpenBSD

This commit is contained in:
purplerain 2023-11-11 01:29:48 +00:00
parent 5903cbe575
commit 62d64fa864
Signed by: purplerain
GPG key ID: F42C07F07E2E35B7
841 changed files with 83929 additions and 40755 deletions

View file

@ -1,4 +1,4 @@
/* $OpenBSD: uipc_socket2.c,v 1.137 2023/07/04 22:28:24 mvs Exp $ */
/* $OpenBSD: uipc_socket2.c,v 1.138 2023/10/30 13:27:53 bluhm Exp $ */
/* $NetBSD: uipc_socket2.c,v 1.11 1996/02/04 02:17:55 christos Exp $ */
/*
@ -920,7 +920,7 @@ sbappendcontrol(struct socket *so, struct sockbuf *sb, struct mbuf *m0,
struct mbuf *control)
{
struct mbuf *m, *mlast, *n;
int space = 0;
int eor = 0, space = 0;
if (control == NULL)
panic("sbappendcontrol");
@ -930,8 +930,16 @@ sbappendcontrol(struct socket *so, struct sockbuf *sb, struct mbuf *m0,
break;
}
n = m; /* save pointer to last control buffer */
for (m = m0; m; m = m->m_next)
for (m = m0; m; m = m->m_next) {
space += m->m_len;
eor |= m->m_flags & M_EOR;
if (eor) {
if (m->m_next == NULL)
m->m_flags |= M_EOR;
else
m->m_flags &= ~M_EOR;
}
}
if (space > sbspace(so, sb))
return (0);
n->m_next = m0; /* concatenate data to control */