Due to a typo, the MSG_MORE flag used to replace MSG_NOSIGNAL and
MSG_DONTWAIT. Fortunately, sockets are always marked non-blocking,
so the loss of MSG_DONTWAIT is harmless, and the NOSIGNAL is covered
by the interception of the SIGPIPE. So no issue could have been
caused by this bug.
send_flag = MSG_DONTWAIT | MSG_NOSIGNAL;
if (try < buf->o)
- send_flag = MSG_MORE;
+ send_flag |= MSG_MORE;
ret = send(conn->t.sock.fd, bo_ptr(buf), try, send_flag | flags);