Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Source/ARTAuth.m
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,8 @@ - (void)requestToken:(ARTTokenParams *)tokenParams
return;
}
if (self.clientId_nosync && tokenDetails.clientId && ![tokenDetails.clientId isEqualToString:@"*"] && ![self.clientId_nosync isEqual:tokenDetails.clientId]) {
if (callback) callback(nil, [ARTErrorInfo createWithCode:ARTErrorIncompatibleCredentials message:@"incompatible credentials"]);
// ably-os:inline-error-update:40102:2025-08-22:e8u Original: "incompatible credentials"
if (callback) callback(nil, [ARTErrorInfo createWithCode:ARTErrorIncompatibleCredentials message:[NSString stringWithFormat:@"Client ID in token (%@) does not match configured client ID (%@)", tokenDetails.clientId, self.clientId_nosync]]);
return;
}
callback(tokenDetails, nil);
Expand Down
11 changes: 9 additions & 2 deletions Source/ARTChannel.m
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,11 @@ - (void)publish:(NSString *)name message:(ARTMessage *)message extras:(id<ARTJso

// Checked after encoding, so that the client can receive callback with encoding errors
if ([self exceedMaxSize:@[message]]) {
// ably-os:inline-error-update:40009:2025-08-22:e8u Original: "Maximum message length exceeded."
NSInteger messageSize = [message messageSize];
NSInteger maxSize = [ARTDefault maxMessageSize];
ARTErrorInfo *sizeError = [ARTErrorInfo createWithCode:ARTErrorMaxMessageLengthExceeded
message:@"Maximum message length exceeded."];
message:[NSString stringWithFormat:@"Max message length of %ld bytes exceeded (was %ld bytes)", (long)maxSize, (long)messageSize]];
if (callback) {
callback(sizeError);
}
Expand Down Expand Up @@ -142,8 +145,12 @@ - (void)publish:(NSArray<ARTMessage *> *)messages callback:(nullable ARTCallback

// Checked after encoding, so that the client can receive callback with encoding errors
if ([self exceedMaxSize:messages]) {
// ably-os:inline-error-update:40009:2025-08-22:e8u Original: "Maximum message length exceeded."
NSInteger totalSize = 0;
for (ARTMessage *msg in messages) { totalSize += [msg messageSize]; }
NSInteger maxSize = [ARTDefault maxMessageSize];
ARTErrorInfo *sizeError = [ARTErrorInfo createWithCode:ARTErrorMaxMessageLengthExceeded
message:@"Maximum message length exceeded."];
message:[NSString stringWithFormat:@"Max message length of %ld bytes exceeded (was %ld bytes)", (long)maxSize, (long)totalSize]];
if (callback) {
callback(sizeError);
}
Expand Down
9 changes: 6 additions & 3 deletions Source/ARTRealtime.m
Original file line number Diff line number Diff line change
Expand Up @@ -725,7 +725,8 @@ - (void)performTransitionToState:(ARTRealtimeConnectionState)state withParams:(A
_fallbacks = nil;
self.rest.prioritizedHost = nil;
[self.auth cancelAuthorization:stateChange.reason];
[self failPendingMessages:[ARTStatus state:ARTStateError info:[ARTErrorInfo createWithCode:ARTErrorConnectionFailed message:@"connection broken before receiving publishing acknowledgment"]]];
// ably-os:inline-error-update:80000:2025-08-22:e8u Original: "connection broken before receiving publishing acknowledgment"
[self failPendingMessages:[ARTStatus state:ARTStateError info:[ARTErrorInfo createWithCode:ARTErrorConnectionFailed message:@"Connection failed while waiting for message publishing acknowledgment"]]];
break;
}
case ARTRealtimeDisconnected: {
Expand Down Expand Up @@ -1073,7 +1074,8 @@ - (void)onConnectionTimeOut {

ARTErrorInfo *error;
if (self.auth.authorizing_nosync && (self.options.authUrl || self.options.authCallback)) {
error = [ARTErrorInfo createWithCode:ARTErrorAuthConfiguredProviderFailure status:ARTStateConnectionFailed message:@"timed out"];
// ably-os:inline-error-update:80019:2025-08-22:e8u Original: "timed out"
error = [ARTErrorInfo createWithCode:ARTErrorAuthConfiguredProviderFailure status:ARTStateConnectionFailed message:@"authentication provider timed out"];
}
else {
error = [ARTErrorInfo createWithCode:ARTErrorConnectionTimedOut status:ARTStateConnectionFailed message:@"timed out"];
Expand Down Expand Up @@ -1563,7 +1565,8 @@ - (void)setIdleTimer {
_idleTimer = artDispatchScheduled(self.options.testOptions.realtimeRequestTimeout + self.maxIdleInterval, _rest.queue, ^{
ARTLogError(self.logger, @"R:%p No activity seen from realtime in %f seconds; assuming connection has dropped", self, [[NSDate date] timeIntervalSinceDate:self->_lastActivity]);

ARTErrorInfo *idleTimerExpired = [ARTErrorInfo createWithCode:ARTErrorDisconnected status:408 message:@"Idle timer expired"];
// ably-os:inline-error-update:80003:2025-08-22:e8u Original: "Idle timer expired"
ARTErrorInfo *idleTimerExpired = [ARTErrorInfo createWithCode:ARTErrorDisconnected status:408 message:@"Connection disconnected due to inactivity timeout"];
ARTConnectionStateChangeParams *const params = [[ARTConnectionStateChangeParams alloc] initWithErrorInfo:idleTimerExpired];
[self performTransitionToDisconnectedOrSuspendedWithParams:params];
});
Expand Down
3 changes: 2 additions & 1 deletion Source/ARTRealtimeChannel.m
Original file line number Diff line number Diff line change
Expand Up @@ -1050,7 +1050,8 @@ - (void)detachAfterChecks {
}] startTimer];

if (self.presence.syncInProgress_nosync) {
[self.presence failsSync:[ARTErrorInfo createWithCode:ARTErrorChannelOperationFailed message:@"channel is being DETACHED"]];
// ably-os:inline-error-update:90000:2025-08-22:e8u Original: "channel is being DETACHED"
[self.presence failsSync:[ARTErrorInfo createWithCode:ARTErrorChannelOperationFailed message:@"channel is being detached"]];
}
}

Expand Down
6 changes: 4 additions & 2 deletions Source/ARTRealtimePresence.m
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,8 @@ - (void)get:(ARTRealtimePresenceQuery *)query callback:(ARTPresenceMessagesCallb
if (callback) callback(self->_members.allValues, nil);
return;
}
if (callback) callback(nil, [ARTErrorInfo createWithCode:ARTErrorPresenceStateIsOutOfSync message:@"presence state is out of sync due to the channel being SUSPENDED"]);
// ably-os:inline-error-update:91005:2025-08-22:e8u Original: "presence state is out of sync due to the channel being SUSPENDED"
if (callback) callback(nil, [ARTErrorInfo createWithCode:ARTErrorPresenceStateIsOutOfSync message:@"Presence data unavailable while channel is SUSPENDED. Wait for channel to reconnect or call channel.attach()"]);
return;
default:
break;
Expand Down Expand Up @@ -769,7 +770,8 @@ - (void)reenterInternalMembers {
for (ARTPresenceMessage *member in [self.internalMembers allValues]) {
[self enterWithPresenceMessageId:member.id clientId:member.clientId data:member.data callback:^(ARTErrorInfo *error) { // RTP17g
if (error != nil) {
NSString *message = [NSString stringWithFormat:@"Re-entering member \"%@\" is failed with code %ld (%@)", member.memberKey, (long)error.code, error.message];
// ably-os:inline-error-update:91004:2025-08-22:e8u Original: "Re-entering member \"%@\" is failed with code %ld (%@)"
NSString *message = [NSString stringWithFormat:@"Unable to automatically re-enter presence member \"%@\" after reconnection (error %ld: %@). Call presence.enter() manually", member.memberKey, (long)error.code, error.message];
ARTErrorInfo *reenterError = [ARTErrorInfo createWithCode:ARTErrorUnableToAutomaticallyReEnterPresenceChannel message:message];
ARTChannelStateChange *stateChange = [[ARTChannelStateChange alloc] initWithCurrent:self->_channel.state_nosync previous:self->_channel.state_nosync event:ARTChannelEventUpdate reason:reenterError resumed:true]; // RTP17e

Expand Down
Loading