mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-25 15:10:48 +01:00
Fix hash functions for transport_name in client entry
This commit is contained in:
parent
50136b6698
commit
34d02484c0
1 changed files with 5 additions and 12 deletions
|
@ -486,23 +486,16 @@ static HT_HEAD(clientmap, clientmap_entry_t) client_history =
|
|||
static INLINE unsigned
|
||||
clientmap_entry_hash(const clientmap_entry_t *a)
|
||||
{
|
||||
return ht_improve_hash(tor_addr_hash(&a->addr));
|
||||
unsigned h = tor_addr_hash(&a->addr);
|
||||
if (a->transport_name)
|
||||
h += ht_string_hash(a->transport_name);
|
||||
return ht_improve_hash(h);
|
||||
}
|
||||
/** Hashtable helper: compare two clientmap_entry_t values for equality. */
|
||||
static INLINE int
|
||||
clientmap_entries_eq(const clientmap_entry_t *a, const clientmap_entry_t *b)
|
||||
{
|
||||
/* If one entry contains a transport and the other doesn't, then
|
||||
they are not equal. */
|
||||
if (a->transport_name && !b->transport_name)
|
||||
return 0;
|
||||
if (!a->transport_name && b->transport_name)
|
||||
return 0;
|
||||
/* If entries contain different transports, they they are not
|
||||
equal. */
|
||||
if (a->transport_name &&
|
||||
b->transport_name &&
|
||||
strcmp(a->transport_name, b->transport_name))
|
||||
if (strcmp_opt(a->transport_name, b->transport_name))
|
||||
return 0;
|
||||
|
||||
return !tor_addr_compare(&a->addr, &b->addr, CMP_EXACT) &&
|
||||
|
|
Loading…
Add table
Reference in a new issue