core should fallback to v4 if v6 isn't available
[quassel.git] / src / core / core.cpp
index 25bdc81..13a7fd9 100644 (file)
@@ -340,12 +340,23 @@ QHash<BufferId, MsgId> Core::bufferLastSeenMsgIds(UserId user) {
 /*** Network Management ***/
 
 bool Core::startListening(uint port) {
-  if(!server.listen(QHostAddress::AnyIPv6, 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() {