Commit f55e795
committed
fix: honor protocol_version_override on the auto-mode success path
negotiate_auto only consulted protocol_version in its initialize()
fallback calls, so mode="auto" (the default) silently dropped the
override whenever the server/discover probe succeeded first - the
override only ever took effect when the probe failed. Since the whole
point of protocol_version_override is to let a caller pin an older or
custom protocol version, an override must always win: when set, skip
the discover probe entirely and go straight to the legacy handshake at
that version.
Regression tests: a unit test on negotiate_auto proving the probe is
skipped even when the stub's discover script would otherwise succeed,
and an e2e test over a real streamable-HTTP server (mode="auto" +
override) proving only `initialize` is sent and `server/discover`
never is.
Reported by a static review pass on this PR; verified independently by
tracing the actual control flow before applying this fix.1 parent abb1d5b commit f55e795
4 files changed
Lines changed: 58 additions & 17 deletions
File tree
- src/mcp/client
- tests
- client
- interaction
- lowlevel
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
56 | 62 | | |
57 | 63 | | |
58 | 64 | | |
59 | 65 | | |
60 | 66 | | |
61 | 67 | | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
62 | 71 | | |
63 | 72 | | |
64 | 73 | | |
| |||
73 | 82 | | |
74 | 83 | | |
75 | 84 | | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
| 85 | + | |
80 | 86 | | |
81 | 87 | | |
82 | 88 | | |
| |||
97 | 103 | | |
98 | 104 | | |
99 | 105 | | |
100 | | - | |
101 | | - | |
102 | | - | |
103 | | - | |
| 106 | + | |
104 | 107 | | |
105 | 108 | | |
106 | 109 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
323 | 323 | | |
324 | 324 | | |
325 | 325 | | |
326 | | - | |
327 | | - | |
328 | | - | |
329 | | - | |
330 | | - | |
331 | | - | |
| 326 | + | |
332 | 327 | | |
333 | 328 | | |
334 | | - | |
335 | | - | |
336 | | - | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
337 | 336 | | |
| 337 | + | |
338 | 338 | | |
339 | 339 | | |
| 340 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
464 | 464 | | |
465 | 465 | | |
466 | 466 | | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
467 | 476 | | |
468 | 477 | | |
469 | 478 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
175 | 175 | | |
176 | 176 | | |
177 | 177 | | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
178 | 206 | | |
179 | 207 | | |
180 | 208 | | |
| |||
0 commit comments