You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Dmitry Maluka (Jira)" <ji...@apache.org> on 2020/04/18 12:36:00 UTC

[jira] [Created] (THRIFT-5177) getaddrinfo() should not be used for Unix sockets

Dmitry Maluka created THRIFT-5177:
-------------------------------------

             Summary: getaddrinfo() should not be used for Unix sockets
                 Key: THRIFT-5177
                 URL: https://issues.apache.org/jira/browse/THRIFT-5177
             Project: Thrift
          Issue Type: Bug
          Components: C++ - Library
            Reporter: Dmitry Maluka


TServerSocket::listen() should not call getaddrinfo() for Unix sockets. The results returned by getaddrinfo() are not used for Unix socket anyway.

Depending on implementation getaddrinfo() may not support Unix sockets properly. In particular, the glibc implementation treats the Unix socket as a network socket and tries to do a bunch of network related stuff with it:

{noformat}
2263       0.000074 write(1, "[18] ++ getaddrinfo()\n", 22) = 22 <0.000032>
2263       0.000095 socket(PF_NETLINK, SOCK_RAW, NETLINK_ROUTE) = 73 <0.000038>
2263       0.000080 bind(73, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0 <0.000034>
2263       0.000085 getsockname(73, {sa_family=AF_NETLINK, pid=-1643670328, groups=00000000}, [12]) = 0 <0.000026>
2263       0.000083 gettimeofday({18, 941549}, NULL) = 0 <0.000024>
2263       0.000081 sendto(73, "\24\0\0\0\26\0\1\3\22\0\0\0\0\0\0\0\0\0\0\0", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20 <0.000061>
2263       0.000119 recvmsg(73, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"L\0\0\0\24\0\2\0\22\0\0\0\310\224\7\236\2\10\200\376\1\0\0\0\10\0\1\0\177\0\0\1"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 76 <0.000041>
2263       0.000131 recvmsg(73, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\24\0\0\0\3\0\2\0\22\0\0\0\310\224\7\236\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 20 <0.000029>
2263       0.000100 close(73)           = 0 <0.000049>
2263       0.000101 open("/etc/gai.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000045>
2263       0.000102 futex(0xf71e5b50, FUTEX_WAKE_PRIVATE, 2147483647) = 0 <0.000025>
2263       0.000067 socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = -1 EAFNOSUPPORT (Address family not supported by protocol) <0.000167>
2263       0.000213 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 73 <0.000034>
2263       0.000076 connect(73, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, 16) = 0 <0.000049>
2263       0.000103 getsockname(73, {sa_family=AF_INET, sin_port=htons(55287), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0 <0.000026>
2263       0.000085 close(73)           = 0 <0.000040>
2263       0.000084 gettimeofday({18, 942811}, NULL) = 0 <0.000025>
2263       0.000074 write(1, "[18] -- getaddrinfo() ret=0\n", 28) = 28 <0.000032>
{noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)