--- src/mod_tile.c~ 2020-09-28 08:43:13.000000000 +0100 +++ src/mod_tile.c 2021-07-20 17:04:03.000000000 +0100 @@ -753,7 +753,11 @@ } } - hashkey = (ip.s6_addr32[0] ^ ip.s6_addr32[1] ^ ip.s6_addr32[2] ^ ip.s6_addr32[3]) % DELAY_HASHTABLE_SIZE; + // hashkey = (ip.s6_addr32[0] ^ ip.s6_addr32[1] ^ ip.s6_addr32[2] ^ ip.s6_addr32[3]) % DELAY_HASHTABLE_SIZE; + // See https://github.com/openstreetmap/mod_tile/commit/8307d19ab7040691b1fd243052b6668a14f4df1f + // and https://github.com/openstreetmap/mod_tile/issues/114 + // https://github.com/openstreetmap/mod_tile/issues/106 + hashkey = (*((uint32_t *)(&ip.s6_addr[0])) ^ *((uint32_t *)(&ip.s6_addr[4])) ^ *((uint32_t *)(&ip.s6_addr[8])) ^ *((uint32_t *)(&ip.s6_addr[12]))) % DELAY_HASHTABLE_SIZE; /* If a delaypool fillup is ongoing, just skip accounting to not block on a lock */ if (delayp->locked) {