Mailing List Archive

[6877] cherokee/trunk/cherokee/access.c: Adds all the IPs that resolves a domain name to an access restriction list .
Revision: 6877
http://svn.cherokee-project.com/changeset/6877
Author: aperez
Date: 2011-10-01 22:43:15 +0200 (Sat, 01 Oct 2011)
Log Message:
-----------
Adds all the IPs that resolves a domain name to an access restriction list.

Modified Paths:
--------------
cherokee/trunk/cherokee/access.c

Modified: cherokee/trunk/cherokee/access.c
===================================================================
--- cherokee/trunk/cherokee/access.c 2011-10-01 09:27:39 UTC (rev 6876)
+++ cherokee/trunk/cherokee/access.c 2011-10-01 20:43:15 UTC (rev 6877)
@@ -325,8 +325,9 @@
cherokee_access_add_domain (cherokee_access_t *entry, char *domain)
{
ret_t ret;
- const char *ip;
+ char ip[46]; // Max IPv6 length is 45
cherokee_resolv_cache_t *resolv;
+ const struct addrinfo *addr_info, *addr;
cherokee_buffer_t domain_buf = CHEROKEE_BUF_INIT;

cherokee_buffer_fake (&domain_buf, domain, strlen(domain));
@@ -334,11 +335,22 @@
ret = cherokee_resolv_cache_get_default (&resolv);
if (unlikely(ret!=ret_ok)) return ret;

- ret = cherokee_resolv_cache_get_ipstr (resolv, &domain_buf, &ip);
+ ret = cherokee_resolv_cache_get_addrinfo (resolv, &domain_buf, &addr_info);
if (unlikely(ret!=ret_ok)) return ret;

- TRACE (ENTRIES, "Access: domain '%s'\n", domain);
- return cherokee_access_add_ip (entry, (char *)ip);
+ addr = addr_info;
+ while (addr != NULL) {
+ ret = cherokee_ntop (addr->ai_family, addr->ai_addr, ip, sizeof(ip));
+ if (unlikely(ret!=ret_ok)) return ret;
+
+ TRACE (ENTRIES, "Access: domain '%s' -> IP: %s\n", domain, ip);
+ ret = cherokee_access_add_ip (entry, (char *)ip);
+ if (unlikely(ret!=ret_ok)) return ret;
+
+ addr = addr->ai_next;
+ }
+
+ return ret_ok;
}