_wantReconnect(false),
_progressMinimum(0),
_progressMaximum(-1),
- _progressValue(-1)
+ _progressValue(-1),
+ _wasReconnect(false),
+ _requestedDisconnect(false)
{
qRegisterMetaType<ConnectionState>("CoreConnection::ConnectionState");
}
switch(status) {
case Solid::Networking::Unknown:
case Solid::Networking::Connected:
- qDebug() << "Solid: Network status changed to connected or unknown";
+ //qDebug() << "Solid: Network status changed to connected or unknown";
if(state() == Disconnected) {
if(_wantReconnect && s.autoReconnect()) {
reconnectToCore();
}
}
break;
+ case Solid::Networking::Disconnecting:
case Solid::Networking::Unconnected:
- qDebug() << "Solid: Disconnected";
- if(!isLocalConnection())
+ if(state() != Disconnected && !isLocalConnection())
disconnectFromCore(tr("Network is down"), true);
break;
default:
}
void CoreConnection::coreSocketDisconnected() {
- qDebug() << Q_FUNC_INFO;
+ // qDebug() << Q_FUNC_INFO;
+ _wasReconnect = !_requestedDisconnect;
resetConnection(true);
// FIXME handle disconnects gracefully
}
}
void CoreConnection::disconnectFromCore() {
+ _requestedDisconnect = true;
disconnectFromCore(QString(), false); // requested disconnect, so don't try to reconnect
}
if(!wantReconnect)
_reconnectTimer.stop();
+ _wasReconnect = wantReconnect; // store if disconnect was requested
+
if(errorString.isEmpty())
emit connectionError(tr("Disconnected"));
else
_socket->deleteLater();
_socket = 0;
}
+ _requestedDisconnect = false;
_blockSize = 0;
_coreMsgBuffer.clear();