diff --git a/lib/browser/mqtt_request_response/protocol_adapter.ts b/lib/browser/mqtt_request_response/protocol_adapter.ts index 06d409af..8ca06643 100644 --- a/lib/browser/mqtt_request_response/protocol_adapter.ts +++ b/lib/browser/mqtt_request_response/protocol_adapter.ts @@ -461,8 +461,8 @@ export class ProtocolClientAdapter extends BufferedEventEmitter { private static isUnsubackReasonCodeRetryable(reasonCode: mqtt5.UnsubackReasonCode) : boolean { switch (reasonCode) { - case mqtt5.UnsubackReasonCode.UnspecifiedError: case mqtt5.UnsubackReasonCode.ImplementationSpecificError: + case mqtt5.UnsubackReasonCode.PacketIdentifierInUse: return true; default: @@ -472,7 +472,6 @@ export class ProtocolClientAdapter extends BufferedEventEmitter { private static isSubackReasonCodeRetryable(reasonCode: mqtt5.SubackReasonCode) : boolean { switch (reasonCode) { - case mqtt5.SubackReasonCode.UnspecifiedError: case mqtt5.SubackReasonCode.PacketIdentifierInUse: case mqtt5.SubackReasonCode.ImplementationSpecificError: case mqtt5.SubackReasonCode.QuotaExceeded: diff --git a/lib/browser/mqtt_request_response/subscription_manager.ts b/lib/browser/mqtt_request_response/subscription_manager.ts index 673287cb..2c5f0b6c 100644 --- a/lib/browser/mqtt_request_response/subscription_manager.ts +++ b/lib/browser/mqtt_request_response/subscription_manager.ts @@ -529,7 +529,7 @@ export class SubscriptionManager extends BufferedEventEmitter { record.status = SubscriptionStatus.Subscribed; this.emitEvents(record, SubscriptionEventType.StreamingSubscriptionEstablished); } else { - if (event.retryable) { + if (event.retryable && !this.closed) { this.activateSubscription(record); } else { record.poisoned = true;