On 07/16 05:05, Philip Guenther wrote: > On Thu, Jul 16, 2015 at 4:54 PM, Jeremy Evans <jer...@openbsd.org> wrote: > > Fix socketpair(2) on Unix datagram sockets that use SOCK_CLOEXEC or > > SOCK_NONBLOCK. > > > > This fixes a failure in the ruby test suite. > > > > OK? > > No, that'll have false positives on SOCK_RAW sockets. You need to > mask things, perhaps a diff like this:
This works and is definitely more correct. OK jeremy@ Thanks, Jeremy > > --- sys/socket.h 21 Jan 2015 02:23:14 -0000 1.87 > +++ sys/socket.h 17 Jul 2015 00:03:48 -0000 > @@ -68,6 +68,9 @@ typedef __sa_family_t sa_family_t; /* so > #define SOCK_RAW 3 /* raw-protocol interface */ > #define SOCK_RDM 4 /* reliably-delivered message > */ > #define SOCK_SEQPACKET 5 /* sequenced packet stream */ > +#ifdef _KERNEL > +#define SOCK_TYPE_MASK 0x000F /* mask that covers the above > */ > +#endif > > /* > * Socket creation flags > Index: kern/uipc_syscalls.c > =================================================================== > RCS file: /data/src/openbsd/src/sys/kern/uipc_syscalls.c,v > retrieving revision 1.102 > diff -u -p -r1.102 uipc_syscalls.c > --- kern/uipc_syscalls.c 21 May 2015 13:35:15 -0000 1.102 > +++ kern/uipc_syscalls.c 17 Jul 2015 00:04:02 -0000 > @@ -403,7 +403,7 @@ sys_socketpair(struct proc *p, void *v, > } > if ((error = soconnect2(so1, so2)) != 0) > goto free4; > - if (SCARG(uap, type) == SOCK_DGRAM) { > + if ((SCARG(uap, type) & SOCK_TYPE_MASK) == SOCK_DGRAM) { > /* > * Datagram socket connection is asymmetric. > */