diff --git a/include/hash.h b/include/hash.h index 38319f043..4a6e72e79 100644 --- a/include/hash.h +++ b/include/hash.h @@ -44,19 +44,19 @@ extern struct Dictionary *nd_dict; #define FNV1_32_INIT 0x811c9dc5UL /* Client hash table size, used in hash.c/s_debug.c */ -#define U_MAX_BITS (32-17) +#define U_MAX_BITS 17 #define U_MAX 131072 /* 2^17 */ /* Channel hash table size, hash.c/s_debug.c */ -#define CH_MAX_BITS (32-16) +#define CH_MAX_BITS 16 #define CH_MAX 65536 /* 2^16 */ /* hostname hash table size */ -#define HOST_MAX_BITS (32-17) +#define HOST_MAX_BITS 17 #define HOST_MAX 131072 /* 2^17 */ /* RESV/XLINE hash table size, used in hash.c */ -#define R_MAX_BITS (32-10) +#define R_MAX_BITS 10 #define R_MAX 1024 /* 2^10 */ diff --git a/src/hash.c b/src/hash.c index 6f2bd6531..9ff4b1259 100644 --- a/src/hash.c +++ b/src/hash.c @@ -109,7 +109,8 @@ fnv_hash_upper(const unsigned char *s, int bits) h ^= ToUpper(*s++); h += (h<<1) + (h<<4) + (h<<7) + (h << 8) + (h << 24); } - h = (h >> bits) ^ (h & ((2^bits)-1)); + if (bits < 32) + h = ((h >> bits) ^ h) & ((1<> bits) ^ (h & ((2^bits)-1)); + if (bits < 32) + h = ((h >> bits) ^ h) & ((1<> bits) ^ (h & ((2^bits)-1)); + if (bits < 32) + h = ((h >> bits) ^ h) & ((1<> bits) ^ (h & ((2^bits)-1)); + if (bits < 32) + h = ((h >> bits) ^ h) & ((1<node, &global_client_list); - /* log */ - ilog(L_SERVER, "Connecting to %s[%s] port %d (%s)", server_p->name, server_p->host, server_p->port, -#ifdef IPV6 - server_p->aftype == AF_INET6 ? "IPv6" : -#endif - (server_p->aftype == AF_INET ? "IPv4" : "?")); - if(ServerConfVhosted(server_p)) { memcpy(&myipnum, &server_p->my_ipnum, sizeof(myipnum)); @@ -1598,6 +1592,13 @@ serv_connect(struct server_conf *server_p, struct Client *by) #endif else { + /* log */ + ilog(L_SERVER, "Connecting to %s[%s] port %d (%s)", server_p->name, server_p->host, server_p->port, +#ifdef IPV6 + server_p->aftype == AF_INET6 ? "IPv6" : +#endif + (server_p->aftype == AF_INET ? "IPv4" : "?")); + comm_connect_tcp(client_p->localClient->fd, server_p->host, server_p->port, NULL, 0, serv_connect_callback, client_p, server_p->aftype, @@ -1605,6 +1606,15 @@ serv_connect(struct server_conf *server_p, struct Client *by) return 1; } + /* log */ + inetntop_sock((struct sockaddr *)&myipnum, vhoststr, sizeof vhoststr); + ilog(L_SERVER, "Connecting to %s[%s] port %d (%s) (vhost %s)", server_p->name, server_p->host, server_p->port, +#ifdef IPV6 + server_p->aftype == AF_INET6 ? "IPv6" : +#endif + (server_p->aftype == AF_INET ? "IPv4" : "?"), vhoststr); + + comm_connect_tcp(client_p->localClient->fd, server_p->host, server_p->port, (struct sockaddr *) &myipnum, GET_SS_LEN(myipnum), serv_connect_callback, client_p,