Commit 47f16d3
committed
fix(proxy): allocation-free encode fast paths + typed path/query selector
encodePhantomForPair: a pre-scan via phantomNeedsQueryEscape returns nil
without any allocation when every byte in the phantom is already in the
unreserved-for-query-component set. Skips the byte->string copy that
url.QueryEscape would otherwise produce for the no-op case.
encodePhantomLowerForPair: a pre-scan returns nil without allocating
when no percent-escape in the encoded phantom contains an uppercase A-F
hex digit, so the "nothing to lowercase" case (notably OAuth JWT
phantoms with no upper-hex escapes) is allocation-free.
swapPhantomBytes: the path-vs-query escape choice is now driven by an
explicit pathContext bool parameter instead of comparing the
human-readable location label. Callers in Request and the two test
helpers pass pathContext directly, so the type system enforces the
escape choice and a typo in the location string can no longer silently
flip path encoding to query encoding (or vice versa).1 parent b5d4a2e commit 47f16d3
3 files changed
Lines changed: 60 additions & 26 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
637 | 637 | | |
638 | 638 | | |
639 | 639 | | |
640 | | - | |
| 640 | + | |
641 | 641 | | |
642 | 642 | | |
643 | 643 | | |
644 | 644 | | |
645 | 645 | | |
646 | | - | |
| 646 | + | |
647 | 647 | | |
648 | 648 | | |
649 | 649 | | |
650 | | - | |
| 650 | + | |
| 651 | + | |
651 | 652 | | |
652 | 653 | | |
653 | | - | |
| 654 | + | |
654 | 655 | | |
655 | 656 | | |
656 | 657 | | |
| |||
1265 | 1266 | | |
1266 | 1267 | | |
1267 | 1268 | | |
1268 | | - | |
1269 | | - | |
1270 | | - | |
1271 | | - | |
1272 | | - | |
1273 | | - | |
1274 | | - | |
1275 | | - | |
| 1269 | + | |
| 1270 | + | |
| 1271 | + | |
| 1272 | + | |
| 1273 | + | |
| 1274 | + | |
| 1275 | + | |
| 1276 | + | |
| 1277 | + | |
| 1278 | + | |
| 1279 | + | |
1276 | 1280 | | |
1277 | 1281 | | |
1278 | 1282 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
854 | 854 | | |
855 | 855 | | |
856 | 856 | | |
857 | | - | |
| 857 | + | |
858 | 858 | | |
859 | 859 | | |
860 | 860 | | |
| |||
892 | 892 | | |
893 | 893 | | |
894 | 894 | | |
895 | | - | |
| 895 | + | |
896 | 896 | | |
897 | 897 | | |
898 | 898 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
5 | 4 | | |
6 | | - | |
7 | 5 | | |
8 | 6 | | |
9 | 7 | | |
10 | 8 | | |
11 | 9 | | |
12 | 10 | | |
13 | 11 | | |
14 | | - | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
15 | 16 | | |
16 | | - | |
17 | | - | |
| 17 | + | |
18 | 18 | | |
19 | 19 | | |
20 | | - | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
21 | 33 | | |
22 | 34 | | |
23 | 35 | | |
| |||
26 | 38 | | |
27 | 39 | | |
28 | 40 | | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
29 | 48 | | |
30 | 49 | | |
31 | 50 | | |
32 | 51 | | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
33 | 65 | | |
34 | 66 | | |
35 | 67 | | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | 68 | | |
40 | 69 | | |
41 | 70 | | |
| |||
46 | 75 | | |
47 | 76 | | |
48 | 77 | | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | 78 | | |
53 | 79 | | |
54 | 80 | | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
55 | 85 | | |
56 | 86 | | |
57 | 87 | | |
| |||
0 commit comments