When turning off TCP_NOPUSH, call tcp_output to immediately flush
out any data pending in the buffer. Submitted by: Tony Finch <dot@dotat.at>
This commit is contained in:
parent
ecde9a6dae
commit
007581c0d8
@ -895,7 +895,6 @@ tcp_ctloutput(so, sopt)
|
||||
switch (sopt->sopt_name) {
|
||||
case TCP_NODELAY:
|
||||
case TCP_NOOPT:
|
||||
case TCP_NOPUSH:
|
||||
error = sooptcopyin(sopt, &optval, sizeof optval,
|
||||
sizeof optval);
|
||||
if (error)
|
||||
@ -908,9 +907,6 @@ tcp_ctloutput(so, sopt)
|
||||
case TCP_NOOPT:
|
||||
opt = TF_NOOPT;
|
||||
break;
|
||||
case TCP_NOPUSH:
|
||||
opt = TF_NOPUSH;
|
||||
break;
|
||||
default:
|
||||
opt = 0; /* dead code to fool gcc */
|
||||
break;
|
||||
@ -922,6 +918,20 @@ tcp_ctloutput(so, sopt)
|
||||
tp->t_flags &= ~opt;
|
||||
break;
|
||||
|
||||
case TCP_NOPUSH:
|
||||
error = sooptcopyin(sopt, &optval, sizeof optval,
|
||||
sizeof optval);
|
||||
if (error)
|
||||
break;
|
||||
|
||||
if (optval)
|
||||
tp->t_flags |= TF_NOPUSH;
|
||||
else {
|
||||
tp->t_flags &= ~TF_NOPUSH;
|
||||
error = tcp_output(tp);
|
||||
}
|
||||
break;
|
||||
|
||||
case TCP_MAXSEG:
|
||||
error = sooptcopyin(sopt, &optval, sizeof optval,
|
||||
sizeof optval);
|
||||
|
Loading…
x
Reference in New Issue
Block a user