Network fixes

This commit is contained in:
Ali 2021-06-13 15:09:37 +04:00
parent e34773579c
commit c20ab60890
3 changed files with 16 additions and 8 deletions

View File

@ -19,6 +19,8 @@
- (bool)messageProcessed:(int64_t)messageId; - (bool)messageProcessed:(int64_t)messageId;
- (void)setMessageProcessed:(int64_t)messageId; - (void)setMessageProcessed:(int64_t)messageId;
- (bool)wasMessageSentOnce:(int64_t)messageId;
- (void)setMessageWasSentOnce:(int64_t)messageId;
- (void)scheduleMessageConfirmation:(int64_t)messageId size:(NSInteger)size; - (void)scheduleMessageConfirmation:(int64_t)messageId size:(NSInteger)size;
- (NSArray *)scheduledMessageConfirmations; - (NSArray *)scheduledMessageConfirmations;
- (bool)scheduledMessageConfirmationsExceedSize:(NSInteger)sizeLimit orCount:(NSUInteger)countLimit; - (bool)scheduledMessageConfirmationsExceedSize:(NSInteger)sizeLimit orCount:(NSUInteger)countLimit;

View File

@ -1148,7 +1148,7 @@ static const NSUInteger MTMaxUnacknowledgedMessageCount = 64;
{ {
if (!_useUnauthorizedMode) if (!_useUnauthorizedMode)
{ {
NSMutableArray *currentContainerMessages = [[NSMutableArray alloc] init]; NSMutableArray<MTPreparedMessage *> *currentContainerMessages = [[NSMutableArray alloc] init];
NSUInteger currentContainerSize = 0; NSUInteger currentContainerSize = 0;
for (NSUInteger j = i; j < transactionMessageList.count; j++, i++) for (NSUInteger j = i; j < transactionMessageList.count; j++, i++)
@ -1186,8 +1186,9 @@ static const NSUInteger MTMaxUnacknowledgedMessageCount = 64;
} }
} }
if (currentContainerMessages.count == 1) if (currentContainerMessages.count == 1 && ![transactionSessionInfo wasMessageSentOnce:currentContainerMessages[0].messageId])
{ {
[transactionSessionInfo setMessageWasSentOnce:currentContainerMessages[0].messageId];
int32_t quickAckId = 0; int32_t quickAckId = 0;
NSData *messageData = [self _dataForEncryptedMessage:currentContainerMessages[0] authKey:authKey sessionInfo:transactionSessionInfo quickAckId:&quickAckId address:scheme.address extendedPadding:extendedPadding]; NSData *messageData = [self _dataForEncryptedMessage:currentContainerMessages[0] authKey:authKey sessionInfo:transactionSessionInfo quickAckId:&quickAckId address:scheme.address extendedPadding:extendedPadding];
if (messageData != nil) if (messageData != nil)
@ -2116,17 +2117,12 @@ static bool isDataEqualToDataConstTime(NSData *data1, NSData *data2) {
if (data1.length != data2.length) { if (data1.length != data2.length) {
return false; return false;
} }
uint8_t const *bytes1 = data1.bytes; uint8_t const *bytes1 = data1.bytes;
uint8_t const *bytes2 = data2.bytes; uint8_t const *bytes2 = data2.bytes;
int result = 0; int result = 0;
for (int i = 0; i < data1.length; i++) { for (int i = 0; i < data1.length; i++) {
if (bytes1[i] != bytes2[i]) { result |= bytes1[i] != bytes2[i];
result |= i + 1;
}
} }
return result == 0; return result == 0;
} }

View File

@ -52,6 +52,7 @@
NSMutableSet *_processedMessageIdsSet; NSMutableSet *_processedMessageIdsSet;
NSMutableArray *_scheduledMessageConfirmations; NSMutableArray *_scheduledMessageConfirmations;
NSMutableDictionary *_containerMessagesMappingDict; NSMutableDictionary *_containerMessagesMappingDict;
NSMutableSet *_sentMessageIdsSet;
} }
@end @end
@ -76,6 +77,7 @@
_scheduledMessageConfirmations = [[NSMutableArray alloc] init]; _scheduledMessageConfirmations = [[NSMutableArray alloc] init];
_processedMessageIdsSet = [[NSMutableSet alloc] init]; _processedMessageIdsSet = [[NSMutableSet alloc] init];
_sentMessageIdsSet = [[NSMutableSet alloc] init];
_containerMessagesMappingDict = [[NSMutableDictionary alloc] init]; _containerMessagesMappingDict = [[NSMutableDictionary alloc] init];
} }
return self; return self;
@ -138,6 +140,14 @@
[_processedMessageIdsSet addObject:@(messageId)]; [_processedMessageIdsSet addObject:@(messageId)];
} }
- (bool)wasMessageSentOnce:(int64_t)messageId {
return [_sentMessageIdsSet containsObject:@(messageId)];
}
- (void)setMessageWasSentOnce:(int64_t)messageId {
[_sentMessageIdsSet addObject:@(messageId)];
}
- (void)scheduleMessageConfirmation:(int64_t)messageId size:(NSInteger)size - (void)scheduleMessageConfirmation:(int64_t)messageId size:(NSInteger)size
{ {
bool found = false; bool found = false;