Skip to content

Commit 767de3c

Browse files
yf-yangdbaeumer
andauthored
fix: avoid dispose unmatched handlers (#1614)
* fix: avoid dispose unmatched handlers * fix: fix for star handlers --------- Co-authored-by: Dirk Bäumer <[email protected]>
1 parent fce52c1 commit 767de3c

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

jsonrpc/src/common/connection.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1327,8 +1327,10 @@ export function createMessageConnection(messageReader: MessageReader, messageWri
13271327
return {
13281328
dispose: () => {
13291329
if (method !== undefined) {
1330-
notificationHandlers.delete(method);
1331-
} else {
1330+
if (notificationHandlers.get(method)?.handler === handler) {
1331+
notificationHandlers.delete(method);
1332+
}
1333+
} else if (starNotificationHandler === type) {
13321334
starNotificationHandler = undefined;
13331335
}
13341336
}
@@ -1341,7 +1343,9 @@ export function createMessageConnection(messageReader: MessageReader, messageWri
13411343
progressHandlers.set(token, handler);
13421344
return {
13431345
dispose: () => {
1344-
progressHandlers.delete(token);
1346+
if (progressHandlers.get(token) === handler) {
1347+
progressHandlers.delete(token);
1348+
}
13451349
}
13461350
};
13471351
},
@@ -1487,8 +1491,10 @@ export function createMessageConnection(messageReader: MessageReader, messageWri
14871491
return;
14881492
}
14891493
if (method !== undefined) {
1490-
requestHandlers.delete(method);
1491-
} else {
1494+
if (requestHandlers.get(method)?.handler === handler) {
1495+
requestHandlers.delete(method);
1496+
}
1497+
} else if (starRequestHandler === type) {
14921498
starRequestHandler = undefined;
14931499
}
14941500
}

0 commit comments

Comments
 (0)