Mercurial > hg > nginx-quic
annotate src/core/ngx_murmurhash.c @ 8824:81a3429db8b0 quic
HTTP/3: delayed Insert Count Increment instruction.
Sending the instruction is delayed until the end of the current event cycle.
Delaying the instruction is allowed by quic-qpack-21, section 2.2.2.3.
The goal is to reduce the amount of data sent back to client by accumulating
several inserts in one instruction and sometimes not sending the instruction at
all, if Section Acknowledgement was sent just before it.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Thu, 27 Jan 2022 12:20:47 +0300 |
parents | f38647c651a8 |
children |
rev | line source |
---|---|
3891 | 1 |
2 /* | |
3 * Copyright (C) Austin Appleby | |
4 */ | |
5 | |
6 | |
7 #include <ngx_config.h> | |
8 #include <ngx_core.h> | |
9 | |
10 | |
11 uint32_t | |
12 ngx_murmur_hash2(u_char *data, size_t len) | |
13 { | |
14 uint32_t h, k; | |
15 | |
16 h = 0 ^ len; | |
17 | |
18 while (len >= 4) { | |
19 k = data[0]; | |
20 k |= data[1] << 8; | |
21 k |= data[2] << 16; | |
22 k |= data[3] << 24; | |
23 | |
24 k *= 0x5bd1e995; | |
25 k ^= k >> 24; | |
26 k *= 0x5bd1e995; | |
27 | |
28 h *= 0x5bd1e995; | |
29 h ^= k; | |
30 | |
31 data += 4; | |
32 len -= 4; | |
33 } | |
34 | |
35 switch (len) { | |
36 case 3: | |
37 h ^= data[2] << 16; | |
6994
f38647c651a8
Added missing "fall through" comments (ticket #1259).
Maxim Dounin <mdounin@mdounin.ru>
parents:
3891
diff
changeset
|
38 /* fall through */ |
3891 | 39 case 2: |
40 h ^= data[1] << 8; | |
6994
f38647c651a8
Added missing "fall through" comments (ticket #1259).
Maxim Dounin <mdounin@mdounin.ru>
parents:
3891
diff
changeset
|
41 /* fall through */ |
3891 | 42 case 1: |
43 h ^= data[0]; | |
44 h *= 0x5bd1e995; | |
45 } | |
46 | |
47 h ^= h >> 13; | |
48 h *= 0x5bd1e995; | |
49 h ^= h >> 15; | |
50 | |
51 return h; | |
52 } |