The code review during the chase for the POST freeze uncovered another possible
issue which might appear when we perform an incomplete read and want to stop because
of READ_DONTWAIT or because we reached the maximum read_poll limit. Reading is
disabled but SI_FL_WAIT_ROOM was not set, possibly causing some cases where a
send() on the other side would not wake the reader up until another activity
on the same side calls the update function which fixes its status.
}
if ((chn->flags & CF_READ_DONTWAIT) || --read_poll <= 0) {
+ si->flags |= SI_FL_WAIT_ROOM;
__conn_data_stop_recv(conn);
break;
}