/***************************************************************************
- * Copyright (C) 2005-2013 by the Quassel Project *
+ * Copyright (C) 2005-2014 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
_lastPingTime(0),
_pingCount(0),
+ _sendPings(false),
_requestedUserModes('-')
{
_autoReconnectTimer.setSingleShot(true);
- _socketCloseTimer.setSingleShot(true);
connect(&_socketCloseTimer, SIGNAL(timeout()), this, SLOT(socketCloseTimeout()));
setPingInterval(networkConfig()->pingInterval());
socket.setProxy(QNetworkProxy::NoProxy);
}
+ enablePingTimeout();
+
#ifdef HAVE_SSL
socket.setProtocol((QSsl::SslProtocol)server.sslVersion);
if (server.useSsl) {
return;
}
}
+
+
+bool CoreNetwork::cipherUsesCBC(const QString &target)
+{
+ CoreIrcChannel *c = qobject_cast<CoreIrcChannel*>(ircChannel(target));
+ if (c)
+ return c->cipher()->usesCBC();
+ CoreIrcUser *u = qobject_cast<CoreIrcUser*>(ircUser(target));
+ if (u)
+ return u->cipher()->usesCBC();
+
+ return false;
+}
#endif /* HAVE_QCA2 */
bool CoreNetwork::setAutoWhoDone(const QString &channel)
return;
#endif
+ socket.setSocketOption(QAbstractSocket::KeepAliveOption, true);
+
CoreIdentity *identity = identityPtr();
if (!identity) {
qCritical() << "Identity invalid!";
sendPerform();
- enablePingTimeout();
+ _sendPings = true;
if (networkConfig()->autoWhoEnabled()) {
_autoWhoCycleTimer.start();
else {
_lastPingTime = now;
_pingCount++;
- userInputHandler()->handlePing(BufferInfo(), QString());
+ // Don't send pings until the network is initialized
+ if(_sendPings)
+ userInputHandler()->handlePing(BufferInfo(), QString());
}
}
void CoreNetwork::disablePingTimeout()
{
_pingTimer.stop();
+ _sendPings = false;
resetPingTimeout();
}