From 33e06af6ae0c5d93f51191fdd0c2d8453c5ddfa9 Mon Sep 17 00:00:00 2001 From: Josip Cavar Date: Tue, 4 Sep 2018 16:55:13 +0200 Subject: [PATCH] Fix transport nil --- MQTTClient/MQTTClient/MQTTSessionManager.m | 28 +++++++++++++++++----- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/MQTTClient/MQTTClient/MQTTSessionManager.m b/MQTTClient/MQTTClient/MQTTSessionManager.m index 27ff2f28..dbefc5c6 100644 --- a/MQTTClient/MQTTClient/MQTTSessionManager.m +++ b/MQTTClient/MQTTClient/MQTTSessionManager.m @@ -11,6 +11,7 @@ #import "MQTTLog.h" #import "ReconnectTimer.h" #import "ForegroundReconnection.h" +#import "MQTTSSLSecurityPolicyTransport.h" @interface MQTTSessionManager() @@ -226,7 +227,7 @@ - (BOOL)requiresTearDown { - (void)updateState:(MQTTSessionManagerState)newState { self.state = newState; - + if ([self.delegate respondsToSelector:@selector(sessionManager:didChangeState:)]) { [self.delegate sessionManager:self didChangeState:newState]; } @@ -264,7 +265,7 @@ - (void)handleEvent:(MQTTSession *)session event:(MQTTSessionEvent)eventCode err } [self updateState:MQTTSessionManagerStateClosed]; break; - + case MQTTSessionEventProtocolError: case MQTTSessionEventConnectionRefused: case MQTTSessionEventConnectionError: @@ -272,7 +273,7 @@ - (void)handleEvent:(MQTTSession *)session event:(MQTTSessionEvent)eventCode err self.lastErrorCode = error; [self updateState:MQTTSessionManagerStateError]; break; - + default: break; } @@ -312,7 +313,7 @@ - (void)connected:(MQTTSession *)session sessionPresent:(BOOL)sessionPresent { } } }]; - + } self.reconnectFlag = TRUE; } @@ -333,6 +334,21 @@ - (void)messageDelivered:(MQTTSession *)session msgID:(UInt16)msgID { - (void)connectToInternal:(MQTTConnectHandler)connectHandler { if (self.session && self.state == MQTTSessionManagerStateStarting) { [self updateState:MQTTSessionManagerStateConnecting]; + MQTTCFSocketTransport *transport; + if (self.securityPolicy) { + transport = [[MQTTSSLSecurityPolicyTransport alloc] init]; + ((MQTTSSLSecurityPolicyTransport *)transport).securityPolicy = self.securityPolicy; + } else { + transport = [[MQTTCFSocketTransport alloc] init]; + } + transport.host = self.host; + transport.port = self.port; + transport.tls = self.tls; + transport.certificates = self.certificates; + transport.voip = self.session.voip; + transport.queue = self.queue; + transport.streamSSLLevel = self.streamSSLLevel; + self.session.transport = transport; [self.session connectWithConnectHandler:connectHandler]; } } @@ -361,7 +377,7 @@ - (void)triggerDelayedReconnect { - (void)setSubscriptions:(NSDictionary *)newSubscriptions { if (self.state == MQTTSessionManagerStateConnected) { NSDictionary *currentSubscriptions = [self.effectiveSubscriptions copy]; - + for (NSString *topicFilter in currentSubscriptions) { if (!newSubscriptions[topicFilter]) { __weak MQTTSessionManager *weakSelf = self; @@ -377,7 +393,7 @@ - (void)setSubscriptions:(NSDictionary *)newSubscription }]; } } - + for (NSString *topicFilter in newSubscriptions) { if (!currentSubscriptions[topicFilter]) { NSNumber *number = newSubscriptions[topicFilter];