Skip to content

Commit 709a649

Browse files
gh-action-runnergh-action-runner
gh-action-runner
authored and
gh-action-runner
committed
Squashed 'apollo-ios/' changes from bc5a0cdf..9d8aafbe
9d8aafbe fix: Websocket error broadcast for unsubscribed ID (#506) git-subtree-dir: apollo-ios git-subtree-split: 9d8aafbedece7483f397cb3a43f30f95892f840d
1 parent e3aebe7 commit 709a649

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

Sources/ApolloWebSocket/WebSocketTransport.swift

+15-9
Original file line numberDiff line numberDiff line change
@@ -193,10 +193,21 @@ public class WebSocketTransport {
193193
}
194194

195195
switch messageType {
196-
case .data,
197-
.next,
198-
.error:
199-
if let id = parseHandler.id, let responseHandler = subscribers[id] {
196+
case .data, .next, .error:
197+
guard let id = parseHandler.id else {
198+
let websocketError = WebSocketError(
199+
payload: parseHandler.payload,
200+
error: parseHandler.error,
201+
kind: .unprocessedMessage(text)
202+
)
203+
self.notifyErrorAllHandlers(websocketError)
204+
205+
break
206+
}
207+
208+
// If we have a handler ID but no subscriber exists for that ID then the
209+
// subscriber probably unsubscribed.
210+
if let responseHandler = subscribers[id] {
200211
if let payload = parseHandler.payload {
201212
responseHandler(.success(payload))
202213
} else if let error = parseHandler.error {
@@ -207,11 +218,6 @@ public class WebSocketTransport {
207218
kind: .neitherErrorNorPayloadReceived)
208219
responseHandler(.failure(websocketError))
209220
}
210-
} else {
211-
let websocketError = WebSocketError(payload: parseHandler.payload,
212-
error: parseHandler.error,
213-
kind: .unprocessedMessage(text))
214-
self.notifyErrorAllHandlers(websocketError)
215221
}
216222
case .complete:
217223
if let id = parseHandler.id {

0 commit comments

Comments
 (0)