Skip to content

mcp: close the session when Connect gets an unsupported protocol version - #1157

Closed
n0liu wants to merge 1 commit into
modelcontextprotocol:mainfrom
n0liu:fix-connect-leak-unsupported-version
Closed

mcp: close the session when Connect gets an unsupported protocol version#1157
n0liu wants to merge 1 commit into
modelcontextprotocol:mainfrom
n0liu:fix-connect-leak-unsupported-version

Conversation

@n0liu

@n0liu n0liu commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Fixes #1154.

Client.Connect returned unsupportedProtocolVersionError without closing the ClientSession it had already built, and returned nil to the caller — so nothing outside the SDK could close it either. The two adjacent error paths in the same function both call cs.Close(); this one now does too.

Without the fix, a client that retries against a server answering this way leaks a reader goroutine and its connection on every attempt, and on a stateful server the session is never deleted.

Added a test that fails Connect on an unsupported protocol version and asserts the session's connection is closed. go test ./mcp/ -race, gofmt, and go vet pass.

Client.Connect returned unsupportedProtocolVersionError without closing
the ClientSession it had already built, and returned nil to the caller,
so nothing could close it. The two adjacent error paths in the same
function both call cs.Close(); this one now does too, so the reader
goroutine and connection are not leaked on each failed attempt.

Fixes modelcontextprotocol#1154
@guglielmo-san

Copy link
Copy Markdown
Contributor

Closing as duplicate of #1158

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Client.Connect leaks the ClientSession when the server answers with an unsupported protocol version

2 participants