/*** Network Management ***/
bool Core::startListening(uint port) {
- if(!server.listen(QHostAddress::Any, port)) {
+ bool success = false;
+
+ // let's see if ipv6 is available
+ success = server.listen(QHostAddress::AnyIPv6, port);
+
+ if(!success && server.serverError() == QAbstractSocket::UnsupportedSocketOperationError) {
+ // fall back to v4
+ success = server.listen(QHostAddress::Any, port);
+ }
+
+ if(!success) {
qWarning("%s", qPrintable(QString("Could not open GUI client port %1: %2").arg(port).arg(server.errorString())));
- return false;
+ } else {
+ qDebug() << "Listening for GUI clients on port" << server.serverPort();
}
- qDebug() << "Listening for GUI clients on port" << server.serverPort();
- return true;
+
+ return success;
}
void Core::stopListening() {
QVariantMap reply;
// Just version information -- check it!
- if((msg.contains("ClientBuild") && msg["ClientBuild"].toUInt() < 732)
- || (!msg.contains("ClientBuild") && msg["ProtocolVersion"].toUInt() < Global::coreNeedsProtocol)) {
+ uint ver = 0;
+ if(!msg.contains("ProtocolVersion") && msg["ClientBuild"].toUInt() >= 732) ver = 1; // FIXME legacy
+ if(msg.contains("ProtocolVersion")) ver = msg["ProtocolVersion"].toUInt();
+ if(ver < Global::coreNeedsProtocol) {
reply["MsgType"] = "ClientInitReject";
reply["Error"] = tr("<b>Your Quassel Client is too old!</b><br>"
"This core needs at least client/core protocol version %1.<br>"