| 127 | } |
| 128 | |
| 129 | T_ERRCODE socket_get_info(p_socket sock, short *port, char *buf, size_t len) { |
| 130 | struct sockaddr_storage sa; |
| 131 | memset(&sa, 0, sizeof(sa)); |
| 132 | socklen_t addrlen = sizeof(sa); |
| 133 | int rc = getsockname(*sock, (struct sockaddr*)&sa, &addrlen); |
| 134 | if (!rc) { |
| 135 | if (sa.ss_family == AF_INET6) { |
| 136 | struct sockaddr_in6* sin = (struct sockaddr_in6*)(&sa); |
| 137 | if (!inet_ntop(AF_INET6, &sin->sin6_addr, buf, len)) { |
| 138 | return errno; |
| 139 | } |
| 140 | *port = ntohs(sin->sin6_port); |
| 141 | } else { |
| 142 | struct sockaddr_in* sin = (struct sockaddr_in*)(&sa); |
| 143 | if (!inet_ntop(AF_INET, &sin->sin_addr, buf, len)) { |
| 144 | return errno; |
| 145 | } |
| 146 | *port = ntohs(sin->sin_port); |
| 147 | } |
| 148 | return SUCCESS; |
| 149 | } |
| 150 | return errno; |
| 151 | } |
| 152 | |
| 153 | //////////////////////////////////////////////////////////////////////////////// |
| 154 | // Server |
no outgoing calls
no test coverage detected