Commit 3bf878a
committed
Fixed KnexKvStore returning null for missing keys
Fedify's KvStore contract requires get() to resolve to undefined when a
key does not exist; null is reserved for stored values. Since Fedify
introduced persistent negative key caching, its KvKeyCache strictly
distinguishes the two: undefined is a cache miss (fetch the key), while
null marks the key as known-unavailable and skips fetching entirely.
Because KnexKvStore returned null for missing rows, every signing key
that had never been cached was misreported as a cached negative entry,
so Fedify never fetched the sender's key and inbound HTTP signature
verification failed with 401 for any new peer. This only affected
deployments using the default MySQL-backed store (self-hosters) - the
Redis store used in production follows the contract correctly.
Also handle stored JSON null values on read: Fedify persists null to
mark failed key lookups, and reading such a row previously threw a
TypeError in Object.hasOwn().
Fixes #19611 parent 0d75f3c commit 3bf878a
2 files changed
Lines changed: 21 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| 21 | + | |
| 22 | + | |
21 | 23 | | |
22 | 24 | | |
23 | | - | |
24 | | - | |
| 25 | + | |
25 | 26 | | |
26 | 27 | | |
27 | 28 | | |
| |||
46 | 47 | | |
47 | 48 | | |
48 | 49 | | |
49 | | - | |
50 | | - | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
51 | 59 | | |
52 | 60 | | |
53 | 61 | | |
| |||
131 | 139 | | |
132 | 140 | | |
133 | 141 | | |
134 | | - | |
| 142 | + | |
135 | 143 | | |
136 | 144 | | |
137 | 145 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
49 | 53 | | |
50 | | - | |
| 54 | + | |
51 | 55 | | |
52 | 56 | | |
53 | 57 | | |
54 | 58 | | |
55 | 59 | | |
56 | 60 | | |
57 | 61 | | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
58 | 65 | | |
59 | 66 | | |
60 | 67 | | |
| |||
0 commit comments