From: Vsevolod Stakhov Date: Mon, 23 Mar 2015 22:13:39 +0000 (+0000) Subject: Use port when calculating listen socket hash. X-Git-Tag: 0.9.0~448 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=7fcf40d88893e07a26cde8d266a18f0ac6b30ccd;p=rspamd.git Use port when calculating listen socket hash. --- diff --git a/src/libutil/addr.c b/src/libutil/addr.c index e115072b1..38e5ac4fa 100644 --- a/src/libutil/addr.c +++ b/src/libutil/addr.c @@ -960,10 +960,11 @@ rspamd_inet_address_compare (const rspamd_inet_addr_t *a1, } gint -rspamd_inet_address_compare_ptr (const gpointer a1, - const gpointer a2) +rspamd_inet_address_compare_ptr (gconstpointer a1, + gconstpointer a2) { - const rspamd_inet_addr_t **i1 = a1, **i2 = a2; + const rspamd_inet_addr_t **i1 = (const rspamd_inet_addr_t **)a1, + **i2 = (const rspamd_inet_addr_t **)a2; return rspamd_inet_address_compare (*i1, *i2); } diff --git a/src/libutil/addr.h b/src/libutil/addr.h index 1ea0ab8b5..a13c14b53 100644 --- a/src/libutil/addr.h +++ b/src/libutil/addr.h @@ -202,8 +202,8 @@ gint rspamd_inet_address_compare (const rspamd_inet_addr_t *a1, * @param a2 * @return */ -gint rspamd_inet_address_compare_ptr (const gpointer a1, - const gpointer a2); +gint rspamd_inet_address_compare_ptr (gconstpointer a1, + gconstpointer a2); /** * Performs deep copy of rspamd inet addr * @param addr diff --git a/src/main.c b/src/main.c index 373c01695..dfa2e6294 100644 --- a/src/main.c +++ b/src/main.c @@ -656,6 +656,8 @@ make_listen_key (struct rspamd_worker_bind_conf *cf) gpointer xxh; guint i, keylen; guint8 *key; + rspamd_inet_addr_t *addr; + guint16 port; xxh = XXH32_init (0xdeadbeef); if (cf->is_systemd) { @@ -665,9 +667,12 @@ make_listen_key (struct rspamd_worker_bind_conf *cf) else { XXH32_update (xxh, cf->name, strlen (cf->name)); for (i = 0; i < cf->cnt; i ++) { + addr = g_ptr_array_index (cf->addrs, i); key = rspamd_inet_address_get_radix_key ( - g_ptr_array_index (cf->addrs, i), &keylen); + addr, &keylen); XXH32_update (xxh, key, keylen); + port = rspamd_inet_address_get_port (addr); + XXH32_update (xxh, &port, sizeof (port)); } }