void LanLinkProvider::sslErrors(const QList<QSslError>& errors) { QSslSocket* socket = qobject_cast<QSslSocket*>(sender()); if (!socket) return; disconnect(socket, SIGNAL(encrypted()), this, SLOT(encrypted())); disconnect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(sslErrors(QList<QSslError>))); foreach(const QSslError &error, errors) { qCDebug(KDECONNECT_CORE) << "SSL Error :" << error.errorString(); switch (error.error()) { case QSslError::CertificateSignatureFailed: case QSslError::CertificateNotYetValid: case QSslError::CertificateExpired: case QSslError::CertificateUntrusted: case QSslError::SelfSignedCertificate: { qCDebug(KDECONNECT_CORE) << "Unpairing device due to " << error.errorString(); // Due to simultaneous multiple connections, it may be possible that device instance does not exist anymore Device *device = Daemon::instance()->getDevice(socket->peerVerifyName()); if (device != Q_NULLPTR) { device->unpair(); } break; } default: continue; // Lots of warnings without this } }
void LanLinkProvider::sslErrors(const QList<QSslError>& errors) { QSslSocket* socket = qobject_cast<QSslSocket*>(sender()); if (!socket) return; disconnect(socket, &QSslSocket::encrypted, this, &LanLinkProvider::encrypted); disconnect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(sslErrors(QList<QSslError>))); Q_FOREACH (const QSslError &error, errors) { switch (error.error()) { case QSslError::CertificateSignatureFailed: case QSslError::CertificateNotYetValid: case QSslError::CertificateExpired: case QSslError::CertificateUntrusted: case QSslError::SelfSignedCertificate: { qCDebug(KDECONNECT_CORE) << "Failing due to " << error.errorString(); // Due to simultaneous multiple connections, it may be possible that device instance does not exist anymore Device *device = Daemon::instance()->getDevice(socket->peerVerifyName()); if (device != Q_NULLPTR) { device->unpair(); } break; } default: continue; } } delete receivedIdentityPackages.take(socket).np; // Socket disconnects itself on ssl error and will be deleted by deleteLater slot, no need to delete manually }