mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-09 02:29:07 +08:00
Cygwin: AF_UNIX: sendmsg: send shutdown state
Send the current shutdown state rather than _SHUT_NONE as part of every packet sent.
This commit is contained in:
parent
95012189c0
commit
c60fcf1116
@ -1848,9 +1848,7 @@ fhandler_socket_unix::shutdown (int how)
|
|||||||
{
|
{
|
||||||
/* Send shutdown info to peer. Note that it's not necessarily fatal
|
/* Send shutdown info to peer. Note that it's not necessarily fatal
|
||||||
if the info isn't sent here. The info will be reproduced by any
|
if the info isn't sent here. The info will be reproduced by any
|
||||||
followup package sent to the peer.
|
followup package sent to the peer. */
|
||||||
|
|
||||||
FIXME: Where is this done? */
|
|
||||||
af_unix_pkt_hdr_t packet (true, (shut_state) new_shutdown_mask, 0, 0, 0);
|
af_unix_pkt_hdr_t packet (true, (shut_state) new_shutdown_mask, 0, 0, 0);
|
||||||
io_lock ();
|
io_lock ();
|
||||||
set_pipe_non_blocking (true);
|
set_pipe_non_blocking (true);
|
||||||
@ -2535,12 +2533,13 @@ fhandler_socket_unix::sendmsg (const struct msghdr *msg, int flags)
|
|||||||
packet = (af_unix_pkt_hdr_t *) tp.w_get ();
|
packet = (af_unix_pkt_hdr_t *) tp.w_get ();
|
||||||
if (get_socket_type () == SOCK_DGRAM && binding_state () == bound)
|
if (get_socket_type () == SOCK_DGRAM && binding_state () == bound)
|
||||||
{
|
{
|
||||||
packet->init (false, _SHUT_NONE, sun_path ()->un_len, 0, 0);
|
packet->init (false, (shut_state) saw_shutdown (),
|
||||||
|
sun_path ()->un_len, 0, 0);
|
||||||
memcpy (AF_UNIX_PKT_NAME (packet), &sun_path ()->un,
|
memcpy (AF_UNIX_PKT_NAME (packet), &sun_path ()->un,
|
||||||
sun_path ()->un_len);
|
sun_path ()->un_len);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
packet->init (false, _SHUT_NONE, 0, 0, 0);
|
packet->init (false, (shut_state) saw_shutdown (), 0, 0, 0);
|
||||||
if (msg->msg_controllen && !create_cmsg_data (packet, msg))
|
if (msg->msg_controllen && !create_cmsg_data (packet, msg))
|
||||||
__leave;
|
__leave;
|
||||||
for (int i = 0; i < msg->msg_iovlen; ++i)
|
for (int i = 0; i < msg->msg_iovlen; ++i)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user