aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/c-ares/ares_parse_aaaa_reply.c
diff options
context:
space:
mode:
authorneksard <neksard@yandex-team.ru>2022-02-10 16:45:33 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:45:33 +0300
commit1d9c550e7c38e051d7961f576013a482003a70d9 (patch)
treeb2cc84ee7850122e7ccf51d0ea21e4fa7e7a5685 /contrib/libs/c-ares/ares_parse_aaaa_reply.c
parent8f7cf138264e0caa318144bf8a2c950e0b0a8593 (diff)
downloadydb-1d9c550e7c38e051d7961f576013a482003a70d9.tar.gz
Restoring authorship annotation for <neksard@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/c-ares/ares_parse_aaaa_reply.c')
-rw-r--r--contrib/libs/c-ares/ares_parse_aaaa_reply.c182
1 files changed, 91 insertions, 91 deletions
diff --git a/contrib/libs/c-ares/ares_parse_aaaa_reply.c b/contrib/libs/c-ares/ares_parse_aaaa_reply.c
index 9777fb3f59..0d39bfa826 100644
--- a/contrib/libs/c-ares/ares_parse_aaaa_reply.c
+++ b/contrib/libs/c-ares/ares_parse_aaaa_reply.c
@@ -1,58 +1,58 @@
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- * Copyright 2005 Dominick Meglio
+
+/* Copyright 1998 by the Massachusetts Institute of Technology.
+ * Copyright 2005 Dominick Meglio
* Copyright (C) 2019 by Andrew Selivanov
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_NETDB_H
-# include <netdb.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-# include <arpa/inet.h>
-#endif
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-#ifdef HAVE_ARPA_NAMESER_COMPAT_H
-# include <arpa/nameser_compat.h>
-#endif
-
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-
-#ifdef HAVE_LIMITS_H
-# include <limits.h>
-#endif
-
-#include "ares.h"
-#include "ares_dns.h"
-#include "ares_inet_net_pton.h"
-#include "ares_private.h"
-
-int ares_parse_aaaa_reply(const unsigned char *abuf, int alen,
- struct hostent **host, struct ares_addr6ttl *addrttls,
- int *naddrttls)
-{
+ *
+ * Permission to use, copy, modify, and distribute this
+ * software and its documentation for any purpose and without
+ * fee is hereby granted, provided that the above copyright
+ * notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting
+ * documentation, and that the name of M.I.T. not be used in
+ * advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ * M.I.T. makes no representations about the suitability of
+ * this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ */
+
+#include "ares_setup.h"
+
+#ifdef HAVE_NETINET_IN_H
+# include <netinet/in.h>
+#endif
+#ifdef HAVE_NETDB_H
+# include <netdb.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+# include <arpa/inet.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+# include <arpa/nameser.h>
+#else
+# include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+# include <arpa/nameser_compat.h>
+#endif
+
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+
+#ifdef HAVE_LIMITS_H
+# include <limits.h>
+#endif
+
+#include "ares.h"
+#include "ares_dns.h"
+#include "ares_inet_net_pton.h"
+#include "ares_private.h"
+
+int ares_parse_aaaa_reply(const unsigned char *abuf, int alen,
+ struct hostent **host, struct ares_addr6ttl *addrttls,
+ int *naddrttls)
+{
struct ares_addrinfo ai;
struct ares_addrinfo_node *next;
struct ares_addrinfo_cname *next_cname;
@@ -63,112 +63,112 @@ int ares_parse_aaaa_reply(const unsigned char *abuf, int alen,
int naliases = 0, naddrs = 0, alias = 0, i;
int cname_ttl = INT_MAX;
int status;
-
+
memset(&ai, 0, sizeof(ai));
-
+
status = ares__parse_into_addrinfo2(abuf, alen, &question_hostname, &ai);
if (status != ARES_SUCCESS)
{
ares_free(question_hostname);
-
+
if (naddrttls)
{
*naddrttls = 0;
}
-
+
return status;
}
hostent = ares_malloc(sizeof(struct hostent));
if (!hostent)
- {
+ {
goto enomem;
- }
-
+ }
+
next = ai.nodes;
while (next)
- {
+ {
if(next->ai_family == AF_INET6)
- {
+ {
++naddrs;
- }
+ }
next = next->ai_next;
- }
+ }
next_cname = ai.cnames;
while (next_cname)
- {
+ {
if(next_cname->alias)
++naliases;
next_cname = next_cname->next;
- }
-
+ }
+
aliases = ares_malloc((naliases + 1) * sizeof(char *));
if (!aliases)
- {
+ {
goto enomem;
}
-
+
if (naliases)
{
next_cname = ai.cnames;
while (next_cname)
- {
+ {
if(next_cname->alias)
aliases[alias++] = strdup(next_cname->alias);
if(next_cname->ttl < cname_ttl)
cname_ttl = next_cname->ttl;
next_cname = next_cname->next;
- }
+ }
}
-
+
aliases[alias] = NULL;
-
+
hostent->h_addr_list = ares_malloc((naddrs + 1) * sizeof(char *));
if (!hostent->h_addr_list)
{
goto enomem;
}
-
+
for (i = 0; i < naddrs + 1; ++i)
{
hostent->h_addr_list[i] = NULL;
}
-
+
if (ai.cnames)
{
hostent->h_name = strdup(ai.cnames->name);
ares_free(question_hostname);
- }
+ }
else
{
hostent->h_name = question_hostname;
}
-
+
hostent->h_aliases = aliases;
hostent->h_addrtype = AF_INET6;
hostent->h_length = sizeof(struct ares_in6_addr);
if (naddrs)
- {
+ {
addrs = ares_malloc(naddrs * sizeof(struct ares_in6_addr));
if (!addrs)
- {
+ {
goto enomem;
- }
+ }
i = 0;
next = ai.nodes;
while (next)
- {
+ {
if(next->ai_family == AF_INET6)
- {
+ {
hostent->h_addr_list[i] = (char*)&addrs[i];
memcpy(hostent->h_addr_list[i],
&(CARES_INADDR_CAST(struct sockaddr_in6 *, next->ai_addr)->sin6_addr),
sizeof(struct ares_in6_addr));
if (naddrttls && i < *naddrttls)
- {
+ {
if(next->ai_ttl > cname_ttl)
addrttls[i].ttl = cname_ttl;
else
@@ -177,22 +177,22 @@ int ares_parse_aaaa_reply(const unsigned char *abuf, int alen,
memcpy(&addrttls[i].ip6addr,
&(CARES_INADDR_CAST(struct sockaddr_in6 *, next->ai_addr)->sin6_addr),
sizeof(struct ares_in6_addr));
- }
+ }
++i;
- }
+ }
next = next->ai_next;
- }
+ }
if (i == 0)
{
ares_free(addrs);
}
- }
+ }
if (host)
- {
+ {
*host = hostent;
- }
+ }
else
{
ares_free_hostent(hostent);
@@ -214,4 +214,4 @@ enomem:
ares__freeaddrinfo_nodes(ai.nodes);
ares_free(question_hostname);
return ARES_ENOMEM;
-}
+}