Commit 339f1ce
Make routing coroutine-safe by removing Route mutations
Router::match and the wildcard branch in Http::runInternal both wrote
to the shared Route singleton (setMatchedPath, path) on every request.
Under Swoole coroutines the Route is shared across in-flight requests,
so concurrent requests could observe each other's matched path.
- Router::match now returns [Route, matchedPath] instead of mutating
the Route. A new Router::setFallback slot replaces Http::$wildcardRoute,
so the method-agnostic catch-all flows through the same matching path
as any other route.
- Route::matchedPath / setMatchedPath / getMatchedPath are removed.
- Http::execute takes the matched path as a parameter; runInternal
threads it through. Public Http::match keeps its ?Route shape.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 3e3b431 commit 339f1ce
3 files changed
Lines changed: 71 additions & 47 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
106 | 106 | | |
107 | 107 | | |
108 | 108 | | |
109 | | - | |
110 | | - | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
111 | 112 | | |
112 | | - | |
| 113 | + | |
113 | 114 | | |
114 | 115 | | |
115 | 116 | | |
| |||
242 | 243 | | |
243 | 244 | | |
244 | 245 | | |
245 | | - | |
| 246 | + | |
| 247 | + | |
246 | 248 | | |
247 | | - | |
| 249 | + | |
248 | 250 | | |
249 | 251 | | |
250 | 252 | | |
| |||
545 | 547 | | |
546 | 548 | | |
547 | 549 | | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
548 | 562 | | |
549 | 563 | | |
550 | | - | |
| 564 | + | |
551 | 565 | | |
552 | 566 | | |
553 | 567 | | |
554 | 568 | | |
555 | 569 | | |
556 | 570 | | |
557 | 571 | | |
558 | | - | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
559 | 581 | | |
560 | | - | |
| 582 | + | |
561 | 583 | | |
562 | 584 | | |
563 | 585 | | |
564 | | - | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
565 | 591 | | |
566 | | - | |
| 592 | + | |
567 | 593 | | |
568 | 594 | | |
569 | 595 | | |
570 | 596 | | |
571 | | - | |
| 597 | + | |
572 | 598 | | |
573 | 599 | | |
574 | 600 | | |
| |||
790 | 816 | | |
791 | 817 | | |
792 | 818 | | |
793 | | - | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
794 | 822 | | |
795 | 823 | | |
796 | 824 | | |
| |||
830 | 858 | | |
831 | 859 | | |
832 | 860 | | |
833 | | - | |
834 | | - | |
835 | | - | |
836 | | - | |
837 | | - | |
838 | | - | |
839 | | - | |
840 | | - | |
841 | | - | |
842 | 861 | | |
843 | | - | |
| 862 | + | |
844 | 863 | | |
845 | 864 | | |
846 | 865 | | |
| |||
923 | 942 | | |
924 | 943 | | |
925 | 944 | | |
926 | | - | |
927 | 945 | | |
928 | 946 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
41 | | - | |
42 | | - | |
43 | 41 | | |
44 | 42 | | |
45 | 43 | | |
| |||
48 | 46 | | |
49 | 47 | | |
50 | 48 | | |
51 | | - | |
52 | | - | |
53 | | - | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | 49 | | |
63 | 50 | | |
64 | 51 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
17 | 22 | | |
18 | 23 | | |
19 | 24 | | |
| |||
105 | 110 | | |
106 | 111 | | |
107 | 112 | | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
108 | 121 | | |
109 | 122 | | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
110 | 130 | | |
111 | | - | |
| 131 | + | |
112 | 132 | | |
113 | 133 | | |
114 | | - | |
| 134 | + | |
115 | 135 | | |
116 | 136 | | |
117 | 137 | | |
| |||
129 | 149 | | |
130 | 150 | | |
131 | 151 | | |
132 | | - | |
133 | | - | |
134 | | - | |
| 152 | + | |
135 | 153 | | |
136 | 154 | | |
137 | 155 | | |
| |||
140 | 158 | | |
141 | 159 | | |
142 | 160 | | |
143 | | - | |
144 | | - | |
145 | | - | |
| 161 | + | |
146 | 162 | | |
147 | 163 | | |
148 | 164 | | |
| |||
152 | 168 | | |
153 | 169 | | |
154 | 170 | | |
155 | | - | |
156 | | - | |
157 | | - | |
| 171 | + | |
158 | 172 | | |
159 | 173 | | |
160 | 174 | | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
161 | 179 | | |
162 | 180 | | |
163 | 181 | | |
| |||
219 | 237 | | |
220 | 238 | | |
221 | 239 | | |
| 240 | + | |
222 | 241 | | |
223 | 242 | | |
224 | 243 | | |
| |||
0 commit comments