From 47cab31d551210437dc5dd86e24ed170dede59da Mon Sep 17 00:00:00 2001
From: Roger Siddons <rsiddons@mythtv.org>
Date: Mon, 11 Apr 2016 10:42:35 +0100
Subject: [PATCH] Avoid crash when file transfer can't open files

916e43bb inadvertently adds a failed File Transfer to the fileTransferList
causing a segfault when a subsequent socket disconnection attempts to clean up and
delete the File Transfer again.

Fixes #12650

diff --git a/mythtv/programs/mythbackend/mainserver.cpp b/mythtv/programs/mythbackend/mainserver.cpp
index 9e36983..98b93cd 100644
--- a/mythtv/programs/mythbackend/mainserver.cpp
+++ b/mythtv/programs/mythbackend/mainserver.cpp
@@ -1941,7 +1941,6 @@ void MainServer::HandleAnnounce(QStringList &slist, QStringList commands,
             if (!controlSocketList.remove(socket))
                 return; // socket was disconnected
             ft = new FileTransfer(filename, socket, writemode);
-            fileTransferList.push_back(ft);
         }
         else
         {
@@ -1949,7 +1948,6 @@ void MainServer::HandleAnnounce(QStringList &slist, QStringList commands,
             if (!controlSocketList.remove(socket))
                 return; // socket was disconnected
             ft = new FileTransfer(filename, socket, usereadahead, timeout_ms);
-            fileTransferList.push_back(ft);
         }
 
         if (!ft->isOpen())
@@ -1963,6 +1961,7 @@ void MainServer::HandleAnnounce(QStringList &slist, QStringList commands,
             return;
         }
         ft->IncrRef();
+        fileTransferList.push_back(ft);
 
         retlist << QString::number(socket->GetSocketDescriptor());
         retlist << QString::number(ft->GetFileSize());
-- 
2.5.0

