From dca4a7c591a88297a77d24ce255dac1a7b465746 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Thu, 23 Jun 2011 16:54:27 +0200 Subject: [PATCH] * Fixed TWK-226. Never advertise ourselves with an unroutable / internal-only IP address. --- src/libtomahawk/network/servent.cpp | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/libtomahawk/network/servent.cpp b/src/libtomahawk/network/servent.cpp index 0ed05161d..da0a8550b 100644 --- a/src/libtomahawk/network/servent.cpp +++ b/src/libtomahawk/network/servent.cpp @@ -195,13 +195,28 @@ Servent::createConnectionKey( const QString& name, const QString &nodeid, const void Servent::setExternalAddress( QHostAddress ha, unsigned int port ) { - m_externalAddress = ha; - m_externalPort = port; - - if( m_externalPort == 0 || m_externalAddress.toString().isEmpty() ) + QString ip = ha.toString(); + if ( !qApp->arguments().contains( "--lanhack" ) ) { - if( !TomahawkSettings::instance()->externalHostname().isEmpty() && - !TomahawkSettings::instance()->externalPort() == 0 ) + if ( ip.startsWith( "10." ) || ip.startsWith( "172.16." ) || ip.startsWith( "192.168." ) ) + { + qDebug() << Q_FUNC_INFO << "Tried to set an invalid ip as external address!"; + return; + } + + m_externalAddress = ha; + m_externalPort = port; + } + else + { + m_externalAddress = ha; + m_externalPort = port; + } + + if ( m_externalPort == 0 || m_externalAddress.toString().isEmpty() ) + { + if ( !TomahawkSettings::instance()->externalHostname().isEmpty() && + !TomahawkSettings::instance()->externalPort() == 0 ) { qDebug() << "UPnP failed, have external address/port -- falling back"; m_externalHostname = TomahawkSettings::instance()->externalHostname();