diff --git a/MTProtoKit/MTContext.h b/MTProtoKit/MTContext.h index 0efd20ec87..3dc310d83c 100644 --- a/MTProtoKit/MTContext.h +++ b/MTProtoKit/MTContext.h @@ -79,7 +79,7 @@ - (void)enumerateAddressSetsForDatacenters:(void (^)(NSInteger datacenterId, MTDatacenterAddressSet *addressSet, BOOL *stop))block; - (MTDatacenterAddressSet *)addressSetForDatacenterWithId:(NSInteger)datacenterId; -- (MTTransportScheme *)transportSchemeForDatacenterWithid:(NSInteger)datacenterId media:(bool)media; +- (MTTransportScheme *)transportSchemeForDatacenterWithid:(NSInteger)datacenterId media:(bool)media optimal:(bool)optimal; - (void)transportSchemeForDatacenterWithIdRequired:(NSInteger)datacenterId media:(bool)media; - (void)invalidateTransportSchemeForDatacenterId:(NSInteger)datacenterId transportScheme:(MTTransportScheme *)transportScheme isProbablyHttp:(bool)isProbablyHttp media:(bool)media; - (void)revalidateTransportSchemeForDatacenterId:(NSInteger)datacenterId transportScheme:(MTTransportScheme *)transportScheme media:(bool)media; diff --git a/MTProtoKit/MTContext.m b/MTProtoKit/MTContext.m index b02dbb7238..9314cc3834 100644 --- a/MTProtoKit/MTContext.m +++ b/MTProtoKit/MTContext.m @@ -672,7 +672,7 @@ return result; } -- (MTTransportScheme *)transportSchemeForDatacenterWithid:(NSInteger)datacenterId media:(bool)media +- (MTTransportScheme *)transportSchemeForDatacenterWithid:(NSInteger)datacenterId media:(bool)media optimal:(bool)optimal { __block MTTransportScheme *result = nil; [[MTContext contextQueue] dispatchOnQueue:^ @@ -694,7 +694,11 @@ if (result != nil && ![result isOptimal]) { - [self transportSchemeForDatacenterWithIdRequired:datacenterId moreOptimalThan:result beginWithHttp:false media:media]; + if (optimal) { + result = [self defaultTransportSchemeForDatacenterWithId:datacenterId media:media]; + } else { + [self transportSchemeForDatacenterWithIdRequired:datacenterId moreOptimalThan:result beginWithHttp:false media:media]; + } } } } synchronous:true]; diff --git a/MTProtoKit/MTProto.m b/MTProtoKit/MTProto.m index 0fcedfba1a..4cf033416a 100644 --- a/MTProtoKit/MTProto.m +++ b/MTProtoKit/MTProto.m @@ -284,7 +284,7 @@ static const NSUInteger MTMaxUnacknowledgedMessageCount = 64; [self setTransport:nil]; } - _transportScheme = [_context transportSchemeForDatacenterWithid:_datacenterId media:_media]; + _transportScheme = [_context transportSchemeForDatacenterWithid:_datacenterId media:_media optimal:_apiEnvironment.socksProxySettings != nil]; if (_transportScheme == nil) {