Cygwin: define MSG_EOR and refuse in send(2)

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen 2019-04-25 18:49:32 +02:00
parent 489e7e2048
commit f527171a93
3 changed files with 13 additions and 0 deletions

View File

@ -1351,6 +1351,13 @@ fhandler_socket_wsock::send_internal (struct _WSAMSG *wsamsg, int flags)
DWORD wait_flags = flags & MSG_DONTWAIT;
bool nosignal = !!(flags & MSG_NOSIGNAL);
/* MSG_EOR not supported by any protocol */
if (flags & MSG_EOR)
{
set_errno (EOPNOTSUPP);
return SOCKET_ERROR;
}
flags &= (MSG_OOB | MSG_DONTROUTE);
if (wsamsg->Control.len > 0)
use_sendmsg = true;

View File

@ -207,6 +207,8 @@ struct OLD_msghdr
/* AF_UNIX specific */
#define MSG_CMSG_CLOEXEC 0x1000 /* Set O_CLOEXEC on fd's passed via
SCM_RIGHTS */
/* MSG_EOR is not supported. We use the MSG_PARTIAL flag here */
#define MSG_EOR 0x8000 /* Terminates a record */
/* Setsockoptions(2) level. Thanks to BSD these must match IPPROTO_xxx */
#define SOL_IP 0

View File

@ -24,3 +24,7 @@ Bug Fixes
completed, instead of when only one key is typed.
- Make console I/O functions thread-safe.
- Define missing MSG_EOR. It's unsupported by the underlying Winsock
layer so using it in send(2), sendto(2), or sendmsg(2) will return -1
with errno set to EOPNOTSUPP and recvmsg(2) will never return it.