diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-03-12 19:08:42 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-03-12 19:08:42 +0000 |
commit | 074d28ebc2c4b5ab952e74b9a815e0a55c26110a (patch) | |
tree | 452b73366ec4ba53eab3ebd7e054946ef28068b2 /src/libutil/addr.c | |
parent | 548833c06eb83565a79166a0921e428bd88af2bd (diff) | |
download | rspamd-074d28ebc2c4b5ab952e74b9a815e0a55c26110a.tar.gz rspamd-074d28ebc2c4b5ab952e74b9a815e0a55c26110a.zip |
Fix sorting order and unit test for upstreams.
Diffstat (limited to 'src/libutil/addr.c')
-rw-r--r-- | src/libutil/addr.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/libutil/addr.c b/src/libutil/addr.c index 19eda5a13..c2bb3db9c 100644 --- a/src/libutil/addr.c +++ b/src/libutil/addr.c @@ -349,6 +349,12 @@ rspamd_parse_inet_address (rspamd_inet_addr_t **target, const char *src) if (src[0] == '/' || src[0] == '.') { return rspamd_parse_unix_path (target, src); } + else if (inet_pton (AF_INET, src, &su.s4.sin_addr) == 1) { + addr = rspamd_inet_addr_create (AF_INET); + memcpy (&addr->u.in.addr.s4.sin_addr, &su.s4.sin_addr, + sizeof (struct in_addr)); + ret = TRUE; + } else if (ipv6_status == RSPAMD_IPV6_SUPPORTED && inet_pton (AF_INET6, src, &su.s6.sin6_addr) == 1) { addr = rspamd_inet_addr_create (AF_INET6); @@ -356,12 +362,6 @@ rspamd_parse_inet_address (rspamd_inet_addr_t **target, const char *src) sizeof (struct in6_addr)); ret = TRUE; } - else if (inet_pton (AF_INET, src, &su.s4.sin_addr) == 1) { - addr = rspamd_inet_addr_create (AF_INET6); - memcpy (&addr->u.in.addr.s4.sin_addr, &su.s4.sin_addr, - sizeof (struct in_addr)); - ret = TRUE; - } if (ret && target) { *target = addr; @@ -918,8 +918,8 @@ rspamd_inet_address_compare (const rspamd_inet_addr_t *a1, g_assert (a2 != NULL); if (a1->af != a2->af) { - return (rspamd_inet_address_af_order (a1) - - rspamd_inet_address_af_order (a2)); + return (rspamd_inet_address_af_order (a2) - + rspamd_inet_address_af_order (a1)); } else { switch (a1->af) { @@ -940,6 +940,15 @@ rspamd_inet_address_compare (const rspamd_inet_addr_t *a1, return 0; } +gint +rspamd_inet_address_compare_ptr (const gpointer a1, + const gpointer a2) +{ + const rspamd_inet_addr_t **i1 = a1, **i2 = a2; + + return rspamd_inet_address_compare (*i1, *i2); +} + rspamd_inet_addr_t * rspamd_inet_address_copy (const rspamd_inet_addr_t *addr) { |