Skip to content

Commit 9a68b8c

Browse files
committed
Process routingRequestId
1 parent 7f8c1bf commit 9a68b8c

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

kotlin-sdk-server/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/server/StreamableHttpServerTransport.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -170,14 +170,15 @@ public class StreamableHttpServerTransport(
170170
}
171171

172172
override suspend fun send(message: JSONRPCMessage, options: TransportSendOptions?) {
173-
val requestId: RequestId? = when (message) {
173+
val responseRequestId: RequestId? = when (message) {
174174
is JSONRPCResponse -> message.id
175175
is JSONRPCError -> message.id
176176
else -> null
177177
}
178+
val routingRequestId = responseRequestId ?: options?.relatedRequestId
178179

179180
// Standalone SSE stream
180-
if (requestId == null) {
181+
if (routingRequestId == null) {
181182
require(message !is JSONRPCResponse && message !is JSONRPCError) {
182183
"Cannot send a response on a standalone SSE stream unless resuming a previous client request"
183184
}
@@ -186,7 +187,8 @@ public class StreamableHttpServerTransport(
186187
return
187188
}
188189

189-
val streamId = requestToStreamMapping[requestId] ?: error("No connection established for request id $requestId")
190+
val streamId = requestToStreamMapping[routingRequestId]
191+
?: error("No connection established for request id $routingRequestId")
190192
val activeStream = streamsMapping[streamId]
191193

192194
if (!enableJsonResponse) {
@@ -198,13 +200,13 @@ public class StreamableHttpServerTransport(
198200
val isTerminated = message is JSONRPCResponse || message is JSONRPCError
199201
if (!isTerminated) return
200202

201-
requestToResponseMapping[requestId] = message
203+
requestToResponseMapping[responseRequestId!!] = message
202204
val relatedIds = requestToStreamMapping.filterValues { it == streamId }.keys
203205

204206
if (relatedIds.any { it !in requestToResponseMapping }) return
205207

206208
streamMutex.withLock {
207-
if (activeStream == null) error("No connection established for request ID: $requestId")
209+
if (activeStream == null) error("No connection established for request ID: $routingRequestId")
208210

209211
if (enableJsonResponse) {
210212
activeStream.call.response.header(HttpHeaders.ContentType, ContentType.Application.Json.toString())

0 commit comments

Comments
 (0)