]> Zhao Yanbai Git Server - minix.git/commitdiff
Do not hide the MSG_NOSIGNAL flag 24/3324/1
authorDavid van Moolenbroek <david@minix3.org>
Mon, 9 May 2016 09:55:07 +0000 (09:55 +0000)
committerDavid van Moolenbroek <david@minix3.org>
Sat, 18 Jun 2016 12:20:48 +0000 (12:20 +0000)
Instead, filter it in libc for old networking implementations, as
those do not support sending SIGPIPE to user processes anyway.  This
change allows newer socket drivers to implement the flag as per the
specification.

Change-Id: I423bdf28ca60f024a344d0a73e2eab38f1b269da

minix/lib/libc/sys/sendmsg.c
minix/lib/libc/sys/sendto.c
sys/sys/socket.h

index 4d4452cff233e06867ec6f3681f58c93250c6f91..846d67dc6484eec58063e3097bc09f9e42b2498b 100644 (file)
@@ -96,6 +96,9 @@ ssize_t sendmsg(int sock, const struct msghdr *msg, int flags)
                return -1;
        }
 
+       /* For old socket driver implementations, this flag is the default. */
+       flags &= ~MSG_NOSIGNAL;
+
        r= ioctl(sock, NWIOGUDSSOTYPE, &uds_sotype);
        if (r != -1 || errno != ENOTTY) {
                if (r == -1) {
index 77304f30143d56eb4aab930edc08b56864533ac8..c194c8182382b1af51b468de7e24e18579fd99e0 100644 (file)
@@ -66,6 +66,9 @@ ssize_t sendto(int sock, const void *message, size_t length, int flags,
        if (r != -1 || (errno != ENOTSOCK && errno != ENOSYS))
                return r;
 
+       /* For old socket driver implementations, this flag is the default. */
+       flags &= ~MSG_NOSIGNAL;
+
        r= ioctl(sock, NWIOGTCPOPT, &tcpopt);
        if (r != -1 || errno != ENOTTY)
        {
index 6b3a1190c2eb434896708c873ac2c613470c14fc..219b90baf6d9249ac5d5ec7daba86ff235bf5da4 100644 (file)
@@ -521,9 +521,7 @@ struct msghdr {
 #define        MSG_DONTWAIT    0x0080          /* this message should be nonblocking */
 #define        MSG_BCAST       0x0100          /* this message was rcvd using link-level brdcst */
 #define        MSG_MCAST       0x0200          /* this message was rcvd using link-level mcast */
-#if !defined(__minix)
 #define        MSG_NOSIGNAL    0x0400          /* do not generate SIGPIPE on EOF */
-#endif /* !defined(__minix) */
 #if defined(_NETBSD_SOURCE)
 #define        MSG_CMSG_CLOEXEC 0x0800         /* close on exec receiving fd */
 #define        MSG_NBIO        0x1000          /* use non-blocking I/O */