Changeset View
Changeset View
Standalone View
Standalone View
head/sys/netinet/tcp_usrreq.c
Show First 20 Lines • Show All 1,190 Lines • ▼ Show 20 Lines | #endif | ||||
if (flags & PRUS_EOF) { | if (flags & PRUS_EOF) { | ||||
/* | /* | ||||
* Close the send side of the connection after | * Close the send side of the connection after | ||||
* the data is sent. | * the data is sent. | ||||
*/ | */ | ||||
socantsendmore(so); | socantsendmore(so); | ||||
tcp_usrclosed(tp); | tcp_usrclosed(tp); | ||||
} | } | ||||
if (TCPS_HAVEESTABLISHED(tp->t_state) && | |||||
((tp->t_flags2 & TF2_FBYTES_COMPLETE) == 0) && | |||||
(tp->t_fbyte_out == 0) && | |||||
(so->so_snd.sb_ccc > 0)) { | |||||
tp->t_fbyte_out = ticks; | |||||
if (tp->t_fbyte_out == 0) | |||||
tp->t_fbyte_out = 1; | |||||
if (tp->t_fbyte_out && tp->t_fbyte_in) | |||||
tp->t_flags2 |= TF2_FBYTES_COMPLETE; | |||||
} | |||||
if (!(inp->inp_flags & INP_DROPPED) && | if (!(inp->inp_flags & INP_DROPPED) && | ||||
!(flags & PRUS_NOTREADY)) { | !(flags & PRUS_NOTREADY)) { | ||||
if (flags & PRUS_MORETOCOME) | if (flags & PRUS_MORETOCOME) | ||||
tp->t_flags |= TF_MORETOCOME; | tp->t_flags |= TF_MORETOCOME; | ||||
error = tp->t_fb->tfb_tcp_output(tp); | error = tp->t_fb->tfb_tcp_output(tp); | ||||
if (flags & PRUS_MORETOCOME) | if (flags & PRUS_MORETOCOME) | ||||
tp->t_flags &= ~TF_MORETOCOME; | tp->t_flags &= ~TF_MORETOCOME; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 1,746 Lines • Show Last 20 Lines |