This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.27.9000-606-g75d5e4a


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  75d5e4a09ea1d1d790ae3bf3309986a3328af567 (commit)
      from  6008824221dfab2a6cb7fc2ffddf1b59ebda6e01 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=75d5e4a09ea1d1d790ae3bf3309986a3328af567

commit 75d5e4a09ea1d1d790ae3bf3309986a3328af567
Author: Thomas Schwinge <tschwinge@gnu.org>
Date:   Fri Jul 20 01:24:41 2018 +0200

    hurd: SOCK_CLOEXEC and SOCK_NONBLOCK for socketpair
    
    	* sysdeps/mach/hurd/socketpair.c (__socketpair): Handle SOCK_CLOEXEC
    	and SOCK_NONBLOCK.

diff --git a/ChangeLog b/ChangeLog
index 4990990..7692a19 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,8 @@
 
 	* sysdeps/mach/hurd/socket.c (__socket): Handle SOCK_CLOEXEC and
 	SOCK_NONBLOCK.
+	* sysdeps/mach/hurd/socketpair.c (__socketpair): Handle SOCK_CLOEXEC
+	and SOCK_NONBLOCK.
 
 2018-07-19  Leonardo Sandoval  <leonardo.sandoval.gonzalez@intel.com>
 
diff --git a/sysdeps/mach/hurd/socketpair.c b/sysdeps/mach/hurd/socketpair.c
index 3b18c67..6dce208 100644
--- a/sysdeps/mach/hurd/socketpair.c
+++ b/sysdeps/mach/hurd/socketpair.c
@@ -17,6 +17,7 @@
 
 #include <errno.h>
 #include <fcntl.h>
+#include <fcntl-internal.h>
 #include <sys/socket.h>
 #include <unistd.h>
 
@@ -34,6 +35,11 @@ __socketpair (int domain, int type, int protocol, int fds[2])
   error_t err;
   socket_t server, sock1, sock2;
   int d1, d2;
+  int flags = sock_to_o_flags (type & ~SOCK_TYPE_MASK);
+  type &= SOCK_TYPE_MASK;
+
+  if (flags & ~(O_CLOEXEC | O_NONBLOCK))
+    return __hurd_fail (EINVAL);
 
   if (fds == NULL)
     return __hurd_fail (EINVAL);
@@ -56,6 +62,14 @@ __socketpair (int domain, int type, int protocol, int fds[2])
 	return -1;
       err = __socket_create (server, type, protocol, &sock1);
     }
+  /* TODO: do we need special ERR massaging here, like it is done in
+     __socket?  */
+  if (! err)
+    {
+      if (flags & O_NONBLOCK)
+	err = __io_set_some_openmodes (sock1, O_NONBLOCK);
+      /* TODO: do we need special ERR massaging after the previous call?  */
+    }
   if (err)
     return __hurd_fail (err);
   if (err = __socket_create (server, type, protocol, &sock2))
@@ -63,7 +77,12 @@ __socketpair (int domain, int type, int protocol, int fds[2])
       __mach_port_deallocate (__mach_task_self (), sock1);
       return __hurd_fail (err);
     }
-  if (err = __socket_connect2 (sock1, sock2))
+  if (flags & O_NONBLOCK)
+    err = __io_set_some_openmodes (sock2, O_NONBLOCK);
+  /* TODO: do we need special ERR massaging after the previous call?  */
+  if (! err)
+    err = __socket_connect2 (sock1, sock2);
+  if (err)
     {
       __mach_port_deallocate (__mach_task_self (), sock1);
       __mach_port_deallocate (__mach_task_self (), sock2);
@@ -72,13 +91,13 @@ __socketpair (int domain, int type, int protocol, int fds[2])
 
   /* Put the sockets into file descriptors.  */
 
-  d1 = _hurd_intern_fd (sock1, O_IGNORE_CTTY, 1);
+  d1 = _hurd_intern_fd (sock1, O_IGNORE_CTTY | flags, 1);
   if (d1 < 0)
     {
       __mach_port_deallocate (__mach_task_self (), sock2);
       return -1;
     }
-  d2 = _hurd_intern_fd (sock2, O_IGNORE_CTTY, 1);
+  d2 = _hurd_intern_fd (sock2, O_IGNORE_CTTY | flags, 1);
   if (d2 < 0)
     {
       err = errno;

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                      |    2 ++
 sysdeps/mach/hurd/socketpair.c |   25 ++++++++++++++++++++++---
 2 files changed, 24 insertions(+), 3 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]