Skip to content

Commit

Permalink
Squashed 'apollo-ios/' changes from bc5a0cdf..9d8aafbe
Browse files Browse the repository at this point in the history
9d8aafbe fix: Websocket error broadcast for unsubscribed ID (#506)

git-subtree-dir: apollo-ios
git-subtree-split: 9d8aafbedece7483f397cb3a43f30f95892f840d
  • Loading branch information
gh-action-runner authored and gh-action-runner committed Oct 16, 2024
1 parent e3aebe7 commit 709a649
Showing 1 changed file with 15 additions and 9 deletions.
24 changes: 15 additions & 9 deletions Sources/ApolloWebSocket/WebSocketTransport.swift
Original file line number Diff line number Diff line change
Expand Up @@ -193,10 +193,21 @@ public class WebSocketTransport {
}

switch messageType {
case .data,
.next,
.error:
if let id = parseHandler.id, let responseHandler = subscribers[id] {
case .data, .next, .error:
guard let id = parseHandler.id else {
let websocketError = WebSocketError(
payload: parseHandler.payload,
error: parseHandler.error,
kind: .unprocessedMessage(text)
)
self.notifyErrorAllHandlers(websocketError)

break
}

// If we have a handler ID but no subscriber exists for that ID then the
// subscriber probably unsubscribed.
if let responseHandler = subscribers[id] {
if let payload = parseHandler.payload {
responseHandler(.success(payload))
} else if let error = parseHandler.error {
Expand All @@ -207,11 +218,6 @@ public class WebSocketTransport {
kind: .neitherErrorNorPayloadReceived)
responseHandler(.failure(websocketError))
}
} else {
let websocketError = WebSocketError(payload: parseHandler.payload,
error: parseHandler.error,
kind: .unprocessedMessage(text))
self.notifyErrorAllHandlers(websocketError)
}
case .complete:
if let id = parseHandler.id {
Expand Down

0 comments on commit 709a649

Please sign in to comment.