version 1.44.2.2, 1999/06/21 14:46:36 |
version 1.45, 1999/05/15 16:42:48 |
|
|
s = splsoftnet(); |
s = splsoftnet(); |
if (so->so_state & SS_CANTSENDMORE) |
if (so->so_state & SS_CANTSENDMORE) |
snderr(EPIPE); |
snderr(EPIPE); |
if (so->so_error) { |
if (so->so_error) |
error = so->so_error; |
snderr(so->so_error); |
so->so_error = 0; |
|
splx(s); |
|
goto release; |
|
} |
|
if ((so->so_state & SS_ISCONNECTED) == 0) { |
if ((so->so_state & SS_ISCONNECTED) == 0) { |
if (so->so_proto->pr_flags & PR_CONNREQUIRED) { |
if (so->so_proto->pr_flags & PR_CONNREQUIRED) { |
if ((so->so_state & SS_ISCONFIRMING) == 0 && |
if ((so->so_state & SS_ISCONFIRMING) == 0 && |
|
|
break; |
break; |
} |
} |
} while (space > 0 && atomic); |
} while (space > 0 && atomic); |
|
|
s = splsoftnet(); |
|
|
|
if (so->so_state & SS_CANTSENDMORE) |
|
snderr(EPIPE); |
|
|
|
if (dontroute) |
if (dontroute) |
so->so_options |= SO_DONTROUTE; |
so->so_options |= SO_DONTROUTE; |
if (resid > 0) |
if (resid > 0) |
so->so_state |= SS_MORETOCOME; |
so->so_state |= SS_MORETOCOME; |
error = (*so->so_proto->pr_usrreq)(so, |
|
(flags & MSG_OOB) ? PRU_SENDOOB : PRU_SEND, |
s = splsoftnet(); /* XXX */ |
top, addr, control, p); |
if (so->so_state & SS_CANTSENDMORE) |
|
error = EPIPE; |
|
else |
|
error = (*so->so_proto->pr_usrreq)(so, |
|
(flags & MSG_OOB) ? PRU_SENDOOB : PRU_SEND, |
|
top, addr, control, p); |
|
splx(s); |
|
|
if (dontroute) |
if (dontroute) |
so->so_options &= ~SO_DONTROUTE; |
so->so_options &= ~SO_DONTROUTE; |
if (resid > 0) |
if (resid > 0) |
so->so_state &= ~SS_MORETOCOME; |
so->so_state &= ~SS_MORETOCOME; |
splx(s); |
|
|
|
clen = 0; |
clen = 0; |
control = 0; |
control = 0; |
top = 0; |
top = 0; |