diff --git a/Bluejay/Bluejay/Bluejay.swift b/Bluejay/Bluejay/Bluejay.swift index b1c9d89..942c742 100644 --- a/Bluejay/Bluejay/Bluejay.swift +++ b/Bluejay/Bluejay/Bluejay.swift @@ -1305,7 +1305,11 @@ extension Bluejay: CBCentralManagerDelegate { connectingCallback = nil - connectedPeripheral = connectingPeripheral + let wasConnected = isConnected + + debugLog("Central manager connected to perihperal already: \(wasConnected)") + + connectedPeripheral = connectingPeripheral ?? connectedPeripheral connectingPeripheral = nil precondition(connectedPeripheral != nil, "Connected peripheral is assigned a nil value despite Bluejay has successfully finished a connection.") @@ -1313,7 +1317,13 @@ extension Bluejay: CBCentralManagerDelegate { shouldAutoReconnect = true debugLog("Should auto-reconnect: \(shouldAutoReconnect)") - queue.process(event: .didConnectPeripheral(connectedPeripheral!), error: nil) + if queue.first is Connection { + queue.process(event: .didConnectPeripheral(connectedPeripheral!), error: nil) + } + + guard !wasConnected else { + return + } for observer in connectionObservers { observer.weakReference?.connected(to: connectedPeripheral!.identifier)