| version 1.44.4.1, 1999/06/21 01:24:05 |
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; |