diff --git a/mythtv/programs/mythbackend/mainserver.cpp b/mythtv/programs/mythbackend/mainserver.cpp
index d1349cb..d4250ee 100644
--- a/mythtv/programs/mythbackend/mainserver.cpp
+++ b/mythtv/programs/mythbackend/mainserver.cpp
@@ -1940,7 +1940,9 @@ void MainServer::HandleAnnounce(QStringList &slist, QStringList commands,
             QWriteLocker lock(&sockListLock);
             if (!controlSocketList.remove(socket))
                 return; // socket was disconnected
+            lock.unlock();
             ft = new FileTransfer(filename, socket, writemode);
+            lock.relock();
             fileTransferList.push_back(ft);
         }
         else
@@ -1948,7 +1950,9 @@ void MainServer::HandleAnnounce(QStringList &slist, QStringList commands,
             QWriteLocker lock(&sockListLock);
             if (!controlSocketList.remove(socket))
                 return; // socket was disconnected
+            lock.unlock();
             ft = new FileTransfer(filename, socket, usereadahead, timeout_ms);
+            lock.relock();
             fileTransferList.push_back(ft);
         }
 
