-static int connect_friend(struct sockaddr **saddr, char *address, uint16_t port)
-{
- struct addrinfo *addresses;
- struct addrinfo *addr;
- struct addrinfo hint;
- int r;
- char sport[6];
- snprintf(sport, sizeof(sport), "%us", port);
- memset(&hint, 0, sizeof(hint));
- hint.ai_family = AF_UNSPEC;
- hint.ai_socktype = SOCK_STREAM;
- hint.ai_protocol = IPPROTO_TCP;
- hint.ai_flags = AI_ADDRCONFIG;
- r = getaddrinfo(address, sport, &hint, &addresses);
- if (r) {
- return r;
- }
- if (addresses != NULL) {
- *saddr = g_malloc(addresses->ai_addrlen);
- if (!*saddr) {
- r = -1;
- } else {
- memcpy(*saddr, addresses->ai_addr, addresses->ai_addrlen);
- }
- }
- freeaddrinfo(addresses);
- if (r == -1)
- return EAI_SYSTEM;
- return 0;
-}
-