From 8427b8b889bc581b6f221f966061a79823461f6e Mon Sep 17 00:00:00 2001 From: Peter Date: Wed, 21 Jun 2017 14:12:47 +0300 Subject: [PATCH] no message --- MTProtoKit/MTHttpTransport.m | 12 ++++++------ MTProtoKit/MTProto.h | 9 ++++++++- MTProtoKit/MTProto.m | 21 +++++++++++++++++---- MTProtoKit/MTTcpTransport.m | 22 ++++++++++++++-------- MTProtoKit/MTTransport.h | 2 +- 5 files changed, 46 insertions(+), 20 deletions(-) diff --git a/MTProtoKit/MTHttpTransport.m b/MTProtoKit/MTHttpTransport.m index b917a16d93..41cdf2eff2 100644 --- a/MTProtoKit/MTHttpTransport.m +++ b/MTProtoKit/MTHttpTransport.m @@ -150,8 +150,8 @@ id delegate = self.delegate; if ([delegate respondsToSelector:@selector(transportNetworkAvailabilityChanged:isNetworkAvailable:)]) [delegate transportNetworkAvailabilityChanged:self isNetworkAvailable:_isNetworkAvailable]; - if ([delegate respondsToSelector:@selector(transportConnectionStateChanged:isConnected:)]) - [delegate transportConnectionStateChanged:self isConnected:_isConnected]; + if ([delegate respondsToSelector:@selector(transportConnectionStateChanged:isConnected:isUsingProxy:)]) + [delegate transportConnectionStateChanged:self isConnected:_isConnected isUsingProxy:false]; if ([delegate respondsToSelector:@selector(transportConnectionContextUpdateStateChanged:isUpdatingConnectionContext:)]) [delegate transportConnectionContextUpdateStateChanged:self isUpdatingConnectionContext:_currentActualizationPingId != 0]; }]; @@ -199,8 +199,8 @@ _isConnected = false; id delegate = self.delegate; - if ([delegate respondsToSelector:@selector(transportConnectionStateChanged:isConnected:)]) - [delegate transportConnectionStateChanged:self isConnected:_isConnected]; + if ([delegate respondsToSelector:@selector(transportConnectionStateChanged:isConnected:isUsingProxy:)]) + [delegate transportConnectionStateChanged:self isConnected:_isConnected isUsingProxy:false]; } }]; } @@ -281,8 +281,8 @@ _isConnected = true; id delegate = self.delegate; - if ([delegate respondsToSelector:@selector(transportConnectionStateChanged:isConnected:)]) - [delegate transportConnectionStateChanged:self isConnected:_isConnected]; + if ([delegate respondsToSelector:@selector(transportConnectionStateChanged:isConnected:isUsingProxy:)]) + [delegate transportConnectionStateChanged:self isConnected:_isConnected isUsingProxy:false]; } [self stopConnectionWatchdogTimer]; diff --git a/MTProtoKit/MTProto.h b/MTProtoKit/MTProto.h index 03b9a4420f..311255ef8d 100644 --- a/MTProtoKit/MTProto.h +++ b/MTProtoKit/MTProto.h @@ -16,12 +16,19 @@ @class MTProto; +@interface MTProtoConnectionState : NSObject + +@property (nonatomic, readonly) bool isConnected; +@property (nonatomic, readonly) bool isUsingProxy; + +@end + @protocol MTProtoDelegate @optional - (void)mtProtoNetworkAvailabilityChanged:(MTProto *)mtProto isNetworkAvailable:(bool)isNetworkAvailable; -- (void)mtProtoConnectionStateChanged:(MTProto *)mtProto isConnected:(bool)isConnected; +- (void)mtProtoConnectionStateChanged:(MTProto *)mtProto state:(MTProtoConnectionState *)state; - (void)mtProtoConnectionContextUpdateStateChanged:(MTProto *)mtProto isUpdatingConnectionContext:(bool)isUpdatingConnectionContext; - (void)mtProtoServiceTasksStateChanged:(MTProto *)mtProto isPerformingServiceTasks:(bool)isPerformingServiceTasks; diff --git a/MTProtoKit/MTProto.m b/MTProtoKit/MTProto.m index fa5931ccb1..0fcedfba1a 100644 --- a/MTProtoKit/MTProto.m +++ b/MTProtoKit/MTProto.m @@ -73,6 +73,19 @@ static const NSUInteger MTMaxContainerSize = 3 * 1024; static const NSUInteger MTMaxUnacknowledgedMessageSize = 1 * 1024 * 1024; static const NSUInteger MTMaxUnacknowledgedMessageCount = 64; +@implementation MTProtoConnectionState + +- (instancetype)initWithIsConnected:(bool)isConnected isUsingProxy:(bool)isUsingProxy { + self = [super init]; + if (self != nil) { + _isConnected = isConnected; + _isUsingProxy = isUsingProxy; + } + return self; +} + +@end + @interface MTProto () { NSMutableArray *_messageServices; @@ -219,7 +232,7 @@ static const NSUInteger MTMaxUnacknowledgedMessageCount = 64; if ([delegate respondsToSelector:@selector(mtProtoNetworkAvailabilityChanged:isNetworkAvailable:)]) [delegate mtProtoNetworkAvailabilityChanged:self isNetworkAvailable:false]; if ([delegate respondsToSelector:@selector(mtProtoConnectionStateChanged:isConnected:)]) - [delegate mtProtoConnectionStateChanged:self isConnected:false]; + [delegate mtProtoConnectionStateChanged:self state:nil]; if ([delegate respondsToSelector:@selector(mtProtoConnectionContextUpdateStateChanged:isUpdatingConnectionContext:)]) [delegate mtProtoConnectionContextUpdateStateChanged:self isUpdatingConnectionContext:false]; } @@ -662,7 +675,7 @@ static const NSUInteger MTMaxUnacknowledgedMessageCount = 64; }]; } -- (void)transportConnectionStateChanged:(MTTransport *)transport isConnected:(bool)isConnected +- (void)transportConnectionStateChanged:(MTTransport *)transport isConnected:(bool)isConnected isUsingProxy:(bool)isUsingProxy { [[MTProto managerQueue] dispatchOnQueue:^ { @@ -680,8 +693,8 @@ static const NSUInteger MTMaxUnacknowledgedMessageCount = 64; } id delegate = _delegate; - if ([delegate respondsToSelector:@selector(mtProtoConnectionStateChanged:isConnected:)]) - [delegate mtProtoConnectionStateChanged:self isConnected:isConnected]; + if ([delegate respondsToSelector:@selector(mtProtoConnectionStateChanged:state:)]) + [delegate mtProtoConnectionStateChanged:self state:[[MTProtoConnectionState alloc] initWithIsConnected:isConnected isUsingProxy:isUsingProxy]]; }]; } diff --git a/MTProtoKit/MTTcpTransport.m b/MTProtoKit/MTTcpTransport.m index 1a557346ec..cda0b04e49 100644 --- a/MTProtoKit/MTTcpTransport.m +++ b/MTProtoKit/MTTcpTransport.m @@ -28,12 +28,16 @@ #import "MTBuffer.h" #import "MTPongMessage.h" +#import "MTContext.h" +#import "MTApiEnvironment.h" + static const NSTimeInterval MTTcpTransportSleepWatchdogTimeout = 60.0; @interface MTTcpTransportContext : NSObject @property (nonatomic, strong) MTDatacenterAddress *address; @property (nonatomic, strong) MTTcpConnection *connection; +@property (nonatomic) bool isUsingProxy; @property (nonatomic) bool connectionConnected; @property (nonatomic) bool connectionIsValid; @@ -112,6 +116,8 @@ static const NSTimeInterval MTTcpTransportSleepWatchdogTimeout = 60.0; transportContext.connectionBehaviour.delegate = self; transportContext.isNetworkAvailable = true; + + transportContext.isUsingProxy = context.apiEnvironment.socksProxySettings != nil; }]; } return self; @@ -157,8 +163,8 @@ static const NSTimeInterval MTTcpTransportSleepWatchdogTimeout = 60.0; id delegate = self.delegate; if ([delegate respondsToSelector:@selector(transportNetworkAvailabilityChanged:isNetworkAvailable:)]) [delegate transportNetworkAvailabilityChanged:self isNetworkAvailable:transportContext.isNetworkAvailable]; - if ([delegate respondsToSelector:@selector(transportConnectionStateChanged:isConnected:)]) - [delegate transportConnectionStateChanged:self isConnected:transportContext.connectionConnected]; + if ([delegate respondsToSelector:@selector(transportConnectionStateChanged:isConnected:isUsingProxy:)]) + [delegate transportConnectionStateChanged:self isConnected:transportContext.connectionConnected isUsingProxy:transportContext.isUsingProxy]; if ([delegate respondsToSelector:@selector(transportConnectionContextUpdateStateChanged:isUpdatingConnectionContext:)]) [delegate transportConnectionContextUpdateStateChanged:self isUpdatingConnectionContext:transportContext.currentActualizationPingMessageId != 0]; }]; @@ -230,8 +236,8 @@ static const NSTimeInterval MTTcpTransportSleepWatchdogTimeout = 60.0; transportContext.connectionIsValid = false; id delegate = self.delegate; - if ([delegate respondsToSelector:@selector(transportConnectionStateChanged:isConnected:)]) - [delegate transportConnectionStateChanged:self isConnected:false]; + if ([delegate respondsToSelector:@selector(transportConnectionStateChanged:isConnected:isUsingProxy:)]) + [delegate transportConnectionStateChanged:self isConnected:false isUsingProxy:transportContext.isUsingProxy]; transportContext.connectionBehaviour.needsReconnection = false; @@ -401,8 +407,8 @@ static const NSTimeInterval MTTcpTransportSleepWatchdogTimeout = 60.0; [transportContext.connectionBehaviour connectionOpened]; id delegate = self.delegate; - if ([delegate respondsToSelector:@selector(transportConnectionStateChanged:isConnected:)]) - [delegate transportConnectionStateChanged:self isConnected:true]; + if ([delegate respondsToSelector:@selector(transportConnectionStateChanged:isConnected:isUsingProxy:)]) + [delegate transportConnectionStateChanged:self isConnected:true isUsingProxy:transportContext.isUsingProxy]; transportContext.didSendActualizationPingAfterConnection = false; transportContext.currentActualizationPingMessageId = 0; @@ -432,8 +438,8 @@ static const NSTimeInterval MTTcpTransportSleepWatchdogTimeout = 60.0; [self restartSleepWatchdogTimer]; id delegate = self.delegate; - if ([delegate respondsToSelector:@selector(transportConnectionStateChanged:isConnected:)]) - [delegate transportConnectionStateChanged:self isConnected:false]; + if ([delegate respondsToSelector:@selector(transportConnectionStateChanged:isConnected:isUsingProxy:)]) + [delegate transportConnectionStateChanged:self isConnected:false isUsingProxy:transportContext.isUsingProxy]; if ([delegate respondsToSelector:@selector(transportTransactionsMayHaveFailed:transactionIds:)]) [delegate transportTransactionsMayHaveFailed:self transactionIds:@[connection.internalId]]; diff --git a/MTProtoKit/MTTransport.h b/MTProtoKit/MTTransport.h index 801b642dce..1011ec85a8 100644 --- a/MTProtoKit/MTTransport.h +++ b/MTProtoKit/MTTransport.h @@ -30,7 +30,7 @@ @optional - (void)transportNetworkAvailabilityChanged:(MTTransport *)transport isNetworkAvailable:(bool)isNetworkAvailable; -- (void)transportConnectionStateChanged:(MTTransport *)transport isConnected:(bool)isConnected; +- (void)transportConnectionStateChanged:(MTTransport *)transport isConnected:(bool)isConnected isUsingProxy:(bool)isUsingProxy; - (void)transportConnectionContextUpdateStateChanged:(MTTransport *)transport isUpdatingConnectionContext:(bool)isUpdatingConnectionContext; - (void)transportConnectionProblemsStatusChanged:(MTTransport *)transport hasConnectionProblems:(bool)hasConnectionProblems isProbablyHttp:(bool)isProbablyHttp;