Commit 333250b
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 9ca38c1 commit 333250b
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 | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
61 | 67 | | |
62 | 68 | | |
63 | 69 | | |
64 | 70 | | |
65 | 71 | | |
66 | 72 | | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
67 | 76 | | |
68 | 77 | | |
69 | 78 | | |
| |||
78 | 87 | | |
79 | 88 | | |
80 | 89 | | |
81 | | - | |
82 | | - | |
83 | | - | |
84 | | - | |
| 90 | + | |
85 | 91 | | |
86 | 92 | | |
87 | 93 | | |
| |||
102 | 108 | | |
103 | 109 | | |
104 | 110 | | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
| 111 | + | |
109 | 112 | | |
110 | 113 | | |
111 | 114 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
335 | 335 | | |
336 | 336 | | |
337 | 337 | | |
338 | | - | |
339 | | - | |
340 | | - | |
341 | | - | |
342 | | - | |
343 | | - | |
| 338 | + | |
344 | 339 | | |
345 | 340 | | |
346 | | - | |
347 | | - | |
348 | | - | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
349 | 348 | | |
| 349 | + | |
350 | 350 | | |
351 | 351 | | |
| 352 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
465 | 465 | | |
466 | 466 | | |
467 | 467 | | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
468 | 477 | | |
469 | 478 | | |
470 | 479 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
178 | 178 | | |
179 | 179 | | |
180 | 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 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
181 | 209 | | |
182 | 210 | | |
183 | 211 | | |
| |||
0 commit comments