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;
- (void)setMessageProcessed:(int64_t)messageId;
- (bool)wasMessageSentOnce:(int64_t)messageId;
- (void)setMessageWasSentOnce:(int64_t)messageId;
- (void)scheduleMessageConfirmation:(int64_t)messageId size:(NSInteger)size;
- (NSArray *)scheduledMessageConfirmations;
- (bool)scheduledMessageConfirmationsExceedSize:(NSInteger)sizeLimit orCount:(NSUInteger)countLimit;

View File

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

View File

@ -52,6 +52,7 @@
NSMutableSet *_processedMessageIdsSet;
NSMutableArray *_scheduledMessageConfirmations;
NSMutableDictionary *_containerMessagesMappingDict;
NSMutableSet *_sentMessageIdsSet;
}
@end
@ -76,6 +77,7 @@
_scheduledMessageConfirmations = [[NSMutableArray alloc] init];
_processedMessageIdsSet = [[NSMutableSet alloc] init];
_sentMessageIdsSet = [[NSMutableSet alloc] init];
_containerMessagesMappingDict = [[NSMutableDictionary alloc] init];
}
return self;
@ -138,6 +140,14 @@
[_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
{
bool found = false;