244
244
bool success = false;
245
245
uint port = Quassel::optionValue("port").toUInt();
247
if(_server.listen(QHostAddress::Any, port)) {
248
quInfo() << "Listening for GUI clients on IPv4 port" << _server.serverPort()
249
<< "using protocol version" << Quassel::buildInfo().protocolVersion;
252
if(_v6server.listen(QHostAddress::AnyIPv6, port)) {
253
quInfo() << "Listening for GUI clients on IPv6 port" << _v6server.serverPort()
254
<< "using protocol version" << Quassel::buildInfo().protocolVersion;
259
qCritical() << qPrintable(QString("Could not open GUI client port %1: %2").arg(port).arg(_server.errorString()));
247
const QString listen = Quassel::optionValue("listen");
248
const QStringList listen_list = listen.split(",", QString::SkipEmptyParts);
249
if(listen_list.size() > 0) {
250
foreach (const QString listen_term, listen_list) { // TODO: handle multiple interfaces for same TCP version gracefully
252
if(!addr.setAddress(listen_term)) {
253
qCritical() << qPrintable(
254
tr("Invalid listen address %1")
258
switch(addr.protocol()) {
259
case QAbstractSocket::IPv4Protocol:
260
if(_server.listen(addr, port)) {
261
quInfo() << qPrintable(
262
tr("Listening for GUI clients on IPv4 %1 port %2 using protocol version %3")
263
.arg(addr.toString())
264
.arg(_server.serverPort())
265
.arg(Quassel::buildInfo().protocolVersion)
269
quWarning() << qPrintable(
270
tr("Could not open IPv4 interface %1:%2: %3")
271
.arg(addr.toString())
273
.arg(_server.errorString()));
275
case QAbstractSocket::IPv6Protocol:
276
if(_v6server.listen(addr, port)) {
277
quInfo() << qPrintable(
278
tr("Listening for GUI clients on IPv6 %1 port %2 using protocol version %3")
279
.arg(addr.toString())
280
.arg(_v6server.serverPort())
281
.arg(Quassel::buildInfo().protocolVersion)
285
// if v4 succeeded on Any, the port will be already in use - don't display the error then
286
// FIXME: handle this more sanely, make sure we can listen to both v4 and v6 by default!
287
if(!success || _v6server.serverError() != QAbstractSocket::AddressInUseError)
288
quWarning() << qPrintable(
289
tr("Could not open IPv6 interface %1:%2: %3")
290
.arg(addr.toString())
292
.arg(_v6server.errorString()));
296
qCritical() << qPrintable(
297
tr("Invalid listen address %1, unknown network protocol")
306
quError() << qPrintable(tr("Could not open any network interfaces to listen on!"));