diff --git a/src/libtomahawk/network/portfwdthread.cpp b/src/libtomahawk/network/portfwdthread.cpp
index 7204d3d52..8e8d9925d 100644
--- a/src/libtomahawk/network/portfwdthread.cpp
+++ b/src/libtomahawk/network/portfwdthread.cpp
@@ -54,7 +54,7 @@ PortFwdThread::work()
     qsrand( QTime( 0, 0, 0 ).secsTo( QTime::currentTime() ) );
     m_portfwd = new Portfwd();
 
-    foreach( QHostAddress ha, QNetworkInterface::allAddresses() )
+    foreach ( QHostAddress ha, QNetworkInterface::allAddresses() )
     {
         if( ha.toString() == "127.0.0.1" ) continue;
         if( ha.toString().contains( ":" ) ) continue; //ipv6
@@ -63,23 +63,23 @@ PortFwdThread::work()
     }
 
     // try and pick an available port:
-    if( m_portfwd->init( 2000 ) )
+    if ( m_portfwd->init( 2000 ) )
     {
         int tryport = m_port;
 
         // last.fm office firewall policy hack
         // (corp. firewall allows outgoing connections to this port,
         //  so listen on this if you want lastfmers to connect to you)
-        if( qApp->arguments().contains( "--porthack" ) )
+        if ( qApp->arguments().contains( "--porthack" ) )
         {
             tryport = 3389;
             m_portfwd->remove( tryport );
         }
 
-        for( int r = 0; r < 3; ++r )
+        for ( int r = 0; r < 3; ++r )
         {
             qDebug() << "Trying to setup portfwd on" << tryport;
-            if( m_portfwd->add( tryport, m_port ) )
+            if ( m_portfwd->add( tryport, m_port ) )
             {
                 QString pubip = QString( m_portfwd->external_ip().c_str() );
                 m_externalAddress = QHostAddress( pubip );
@@ -95,7 +95,7 @@ PortFwdThread::work()
     else
         qDebug() << "No UPNP Gateway device found?";
 
-    if( !m_externalPort )
+    if ( !m_externalPort )
         qDebug() << "Could not setup fwd for port:" << m_port;
 
     emit externalAddressDetected( m_externalAddress, m_externalPort );
diff --git a/src/libtomahawk/network/servent.cpp b/src/libtomahawk/network/servent.cpp
index a8701aff1..d4bd8de5b 100644
--- a/src/libtomahawk/network/servent.cpp
+++ b/src/libtomahawk/network/servent.cpp
@@ -136,26 +136,10 @@ Servent::startListening( QHostAddress ha, bool upnp, int port )
     if ( mode == TomahawkSettings::Upnp && !upnp )
         mode = TomahawkSettings::Lan;
 
-    switch( mode )
+    switch ( mode )
     {
         case TomahawkSettings::Lan:
-            foreach( QHostAddress ha, QNetworkInterface::allAddresses() )
-            {
-                if( ha.toString() == "127.0.0.1" ) continue;
-                if( ha.toString().contains( ":" ) ) continue; //ipv6
-
-                if ( qApp->arguments().contains( "--lanhack" ) )
-                {
-                    tLog() << "LANHACK: set external address to lan address" << ha.toString();
-                    QMetaObject::invokeMethod( this, "setExternalAddress", Qt::QueuedConnection, Q_ARG( QHostAddress, ha ), Q_ARG( unsigned int, m_port ) );
-                }
-                else
-                {
-                    m_ready = true;
-                    emit ready();
-                }
-                break;
-            }
+            setInternalAddress();
             break;
 
         case TomahawkSettings::Upnp:
@@ -179,7 +163,7 @@ Servent::createConnectionKey( const QString& name, const QString &nodeid, const
     QString _key = ( key.isEmpty() ? uuid() : key );
     ControlConnection* cc = new ControlConnection( this );
     cc->setName( name.isEmpty() ? QString( "KEY(%1)" ).arg( key ) : name );
-    if( !nodeid.isEmpty() )
+    if ( !nodeid.isEmpty() )
         cc->setId( nodeid );
     cc->setOnceOnly( onceOnly );
 
@@ -189,6 +173,31 @@ Servent::createConnectionKey( const QString& name, const QString &nodeid, const
 }
 
 
+void
+Servent::setInternalAddress()
+{
+    foreach ( QHostAddress ha, QNetworkInterface::allAddresses() )
+    {
+        if ( ha.toString() == "127.0.0.1" )
+            continue;
+        if ( ha.toString().contains( ":" ) )
+            continue; //ipv6
+
+        if ( qApp->arguments().contains( "--lanhack" ) )
+        {
+            tLog() << "LANHACK: set external address to lan address" << ha.toString();
+            setExternalAddress( ha, m_port );
+        }
+        else
+        {
+            m_ready = true;
+            emit ready();
+        }
+        break;
+    }
+}
+
+
 void
 Servent::setExternalAddress( QHostAddress ha, unsigned int port )
 {
@@ -198,6 +207,7 @@ Servent::setExternalAddress( QHostAddress ha, unsigned int port )
         if ( ip.startsWith( "10." ) || ip.startsWith( "172.16." ) || ip.startsWith( "192.168." ) )
         {
             tDebug() << Q_FUNC_INFO << "Tried to set an invalid ip as external address!";
+            setInternalAddress();
             return;
         }
 
diff --git a/src/libtomahawk/network/servent.h b/src/libtomahawk/network/servent.h
index 3c668bad6..8ead47b3b 100644
--- a/src/libtomahawk/network/servent.h
+++ b/src/libtomahawk/network/servent.h
@@ -134,6 +134,7 @@ protected:
     void incomingConnection( int sd );
 
 public slots:
+    void setInternalAddress();
     void setExternalAddress( QHostAddress ha, unsigned int port );
 
     void socketError( QAbstractSocket::SocketError );