Error with socketpair and getsockname

Marco Righele marco at righele.it
Wed Aug 5 04:17:16 PDT 2015


Greetings,

I would expect the following sample program to finish without errors, 
but instead the second assert is triggered
when running in DragonFlyBSD 4.2.3


   #include <stdio.h>
   #include <stdlib.h>
   #include <assert.h>

   #include <sys/types.h>
   #include <sys/socket.h>

   int main(int argc, char** argv)
   {
       struct sockaddr sa;
       socklen_t len;
       int type;
       int fds[2];

       if (socketpair(AF_UNIX, SOCK_STREAM, 0, fds)) {
           printf("socketpair error");
           return 1;
       }

       if (getsockopt(fds[0], SOL_SOCKET, SO_TYPE, &type, &len)) {
           printf("getsockopt error\n");
           return 1;
       }

       len = sizeof(sa);
       if (getsockname(fds[0], &sa, &len)) {
           printf("getsockname error\n");
           return 1;
       }
       assert( type == SOCK_STREAM );
       assert( sa.sa_family == AF_UNIX );
   }

Instead of AF_UNIX the call to getsockname returns AF_UNSET.
Am I missing something ?

Thanks,
Marco








More information about the Users mailing list