| version 1.45, 1999/05/15 16:42:48 |
version 1.46, 1999/05/15 22:36:34 |
|
|
| break; |
break; |
| } |
} |
| } while (space > 0 && atomic); |
} while (space > 0 && atomic); |
| |
|
| |
#ifdef TEST_FOR_PANIC_UIPC_3_RACE_CONDITION |
| |
{ |
| |
extern struct domain unixdomain; |
| |
|
| |
if (so->so_proto->pr_domain == &unixdomain) |
| |
sleep(&lbolt, PVFS); |
| |
} |
| |
#endif |
| |
|
| |
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, |
| s = splsoftnet(); /* XXX */ |
(flags & MSG_OOB) ? PRU_SENDOOB : PRU_SEND, |
| if (so->so_state & SS_CANTSENDMORE) |
top, addr, control, p); |
| 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; |