SCCS-vsn: sys/kern/uipc_socket.c 4.12
-/* uipc_socket.c 4.11 81/11/21 */
+/* uipc_socket.c 4.12 81/11/22 */
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/param.h"
#include "../h/systm.h"
- if (sosendallatonce(so) && sbspace(&so->so_snd) < u.u_count) {
+ space = sbspace(&so->so_snd);
+ if (space == 0 || sosendallatonce(so) && space < u.u_count) {
if (so->so_options & SO_NBIO)
snderr(EWOULDBLOCK);
sbunlock(&so->so_snd);
if (so->so_options & SO_NBIO)
snderr(EWOULDBLOCK);
sbunlock(&so->so_snd);
- while (u.u_count && (space = sbspace(&so->so_snd)) > 0) {
+ while (u.u_count && space > 0) {
MGET(m, 1);
if (m == NULL) {
error = ENOBUFS;
MGET(m, 1);
if (m == NULL) {
error = ENOBUFS;
m->m_len = len;
*mp = m;
mp = &m->m_next;
m->m_len = len;
*mp = m;
mp = &m->m_next;
+ space = sbspace(&so->so_snd);
}
s = splnet();
goto again;
}
s = splnet();
goto again;
if (m == 0)
panic("receive");
if ((so->so_proto->pr_flags & PR_ADDR)) {
if (m == 0)
panic("receive");
if ((so->so_proto->pr_flags & PR_ADDR)) {
- so->so_rcv.sb_mb = m->m_next;
if (asa) {
so->so_rcv.sb_cc -= m->m_len;
len = MIN(m->m_len, sizeof (struct sockaddr));
bcopy(mtod(m, caddr_t), (caddr_t)asa, len);
} else
bzero((caddr_t)asa, sizeof (*asa));
if (asa) {
so->so_rcv.sb_cc -= m->m_len;
len = MIN(m->m_len, sizeof (struct sockaddr));
bcopy(mtod(m, caddr_t), (caddr_t)asa, len);
} else
bzero((caddr_t)asa, sizeof (*asa));
if (m == 0)
panic("receive 2");
if (m == 0)
panic("receive 2");