Lines Matching defs:aip
136 static struct addrinfo *copy_decode_addrinfo_dynamic(struct addrinfo *aip);
139 static void free_copied_addrinfo(struct addrinfo *aip);
497 copy_decode_addrinfo_dynamic(struct addrinfo *aip) {
500 if (aip == NULL)
503 newaip = malloc(sizeof(struct addrinfo) + aip->ai_addrlen);
507 *newaip = *aip;
509 memcpy(newaip->ai_addr, aip->ai_addr, aip->ai_addrlen);
512 newaip->ai_canonname = decode_name_dynamic(aip->ai_canonname);
514 newaip->ai_next = copy_decode_addrinfo_dynamic(aip->ai_next);
521 free_copied_addrinfo(struct addrinfo *aip) {
522 while (aip != NULL) {
523 struct addrinfo *next = aip->ai_next;
525 if (aip->ai_canonname != NULL)
526 free(aip->ai_canonname);
527 free(aip);
528 aip = next;
964 struct addrinfo *aip;
980 err = REAL(getaddrinfo)(nodename, servname, hints, &aip);
981 if (err == 0 && aip != NULL) {
982 *res = copy_decode_addrinfo_dynamic(aip);
987 if (aip != NULL)
988 REAL(freeaddrinfo)(aip);
997 ENTRY(freeaddrinfo)(struct addrinfo *aip) {
998 TRACE(("freeaddrinfo(aip=%p)\n", (void *)aip));
1000 if (obj_islocked(aip)) {
1004 obj_unlock(aip);
1005 free_copied_addrinfo(aip);
1010 REAL(freeaddrinfo)(aip);