diff --git a/src/libtomahawk/utils/tomahawkutils.cpp b/src/libtomahawk/utils/tomahawkutils.cpp
index 43b698e6d..c62a7d8e3 100644
--- a/src/libtomahawk/utils/tomahawkutils.cpp
+++ b/src/libtomahawk/utils/tomahawkutils.cpp
@@ -575,10 +575,12 @@ proxyFactory( bool noMutexLocker )
 
 
 void
-setProxyFactory( NetworkProxyFactory* factory )
+setProxyFactory( NetworkProxyFactory* factory, bool noMutexLocker )
 {
     Q_ASSERT( factory );
-    QMutexLocker locker( &s_namAccessMutex );
+    // Don't lock if being called from setNam()
+    QMutex otherMutex;
+    QMutexLocker locker( noMutexLocker ? &otherMutex : &s_namAccessMutex );
 
     if ( !s_threadProxyFactoryHash.contains( TOMAHAWK_APPLICATION::instance()->thread() ) )
         return;
@@ -662,6 +664,9 @@ setNam( QNetworkAccessManager* nam )
     }
 
     s_threadNamHash[ QThread::currentThread() ] = nam;
+
+    if ( QThread::currentThread() == TOMAHAWK_APPLICATION::instance()->thread() )
+        setProxyFactory( dynamic_cast< TomahawkUtils::NetworkProxyFactory* >( nam->proxyFactory() ), true );
 }
 
 
diff --git a/src/libtomahawk/utils/tomahawkutils.h b/src/libtomahawk/utils/tomahawkutils.h
index d8b034adf..028e55f27 100644
--- a/src/libtomahawk/utils/tomahawkutils.h
+++ b/src/libtomahawk/utils/tomahawkutils.h
@@ -97,7 +97,7 @@ namespace TomahawkUtils
     DLLEXPORT NetworkProxyFactory* proxyFactory( bool noMutexLocker = false );
     DLLEXPORT QNetworkAccessManager* nam();
 
-    DLLEXPORT void setProxyFactory( TomahawkUtils::NetworkProxyFactory* factory );
+    DLLEXPORT void setProxyFactory( TomahawkUtils::NetworkProxyFactory* factory, bool noMutexLocker = false );
     DLLEXPORT void setNam( QNetworkAccessManager* nam );
 
     DLLEXPORT QWidget* tomahawkWindow();