]> source.dussan.org Git - rspamd.git/commitdiff
Use port when calculating listen socket hash.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 23 Mar 2015 22:13:39 +0000 (22:13 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 23 Mar 2015 22:13:39 +0000 (22:13 +0000)
src/libutil/addr.c
src/libutil/addr.h
src/main.c

index e115072b1a9c80f2217252fecc0af8d693a58ead..38e5ac4fa080a005235aab54bf8f5b3eb4739129 100644 (file)
@@ -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);
 }
index 1ea0ab8b5610dd37161b79dbc6c7aa91196ebfdc..a13c14b53802562f314799b5f905a24a862ae488 100644 (file)
@@ -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
index 373c0169581aba7f17583fb5d173a75f6644cf89..dfa2e6294319435c3572e991bbe796fcdeed4c27 100644 (file)
@@ -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));
                }
        }