Skip to content

Commit 59b923c

Browse files
committed
fix session id initialization
1 parent 0f53f86 commit 59b923c

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

src/index.ts

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -282,10 +282,19 @@ if (useHttp) {
282282
if (sessionId && transports[sessionId]) {
283283
// Reuse existing transport
284284
transport = transports[sessionId];
285-
} else if (!sessionId && isInitializeRequest(jsonData)) {
286-
// New initialization request
285+
} else if (!sessionId) {
286+
// Create new session (either for initialize request or fallback)
287+
const newSessionId = randomUUID();
288+
const isInit = isInitializeRequest(jsonData);
289+
290+
if (isInit) {
291+
logger.info(`Creating new session for initialize request: ${newSessionId}`);
292+
} else {
293+
logger.warn(`Creating fallback session for non-initialize request: ${newSessionId}`);
294+
}
295+
287296
transport = new StreamableHTTPServerTransport({
288-
sessionIdGenerator: () => randomUUID(),
297+
sessionIdGenerator: () => newSessionId,
289298
onsessioninitialized: (id) => {
290299
transports[id] = transport;
291300
logger.info(`Session initialized: ${id}`);
@@ -304,12 +313,16 @@ if (useHttp) {
304313
await transport.handleRequest(req, res, jsonData);
305314
return;
306315
} else {
307-
// Invalid request
316+
// Invalid request - session ID provided but not found
317+
logger.error(`Invalid session ID: ${sessionId}. Active sessions count: ${Object.keys(transports).length}`);
308318
res.writeHead(400);
309319
res.end(JSON.stringify({
310320
jsonrpc: '2.0',
311-
error: { code: -32000, message: 'Bad Request: No valid session ID' },
312-
id: null
321+
error: {
322+
code: -32000,
323+
message: `Bad Request: Invalid session ID. Please initialize a new session first.`
324+
},
325+
id: jsonData.id || null
313326
}));
314327
return;
315328
}

0 commit comments

Comments
 (0)