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
|
b
|
void MainServer::HandleAnnounce(QStringList &slist, QStringList commands, |
1941 | 1941 | if (!controlSocketList.remove(socket)) |
1942 | 1942 | return; // socket was disconnected |
1943 | 1943 | ft = new FileTransfer(filename, socket, writemode); |
1944 | | fileTransferList.push_back(ft); |
1945 | 1944 | } |
1946 | 1945 | else |
1947 | 1946 | { |
… |
… |
void MainServer::HandleAnnounce(QStringList &slist, QStringList commands, |
1949 | 1948 | if (!controlSocketList.remove(socket)) |
1950 | 1949 | return; // socket was disconnected |
1951 | 1950 | ft = new FileTransfer(filename, socket, usereadahead, timeout_ms); |
1952 | | fileTransferList.push_back(ft); |
1953 | 1951 | } |
1954 | 1952 | |
1955 | 1953 | if (!ft->isOpen()) |
… |
… |
void MainServer::HandleAnnounce(QStringList &slist, QStringList commands, |
1963 | 1961 | return; |
1964 | 1962 | } |
1965 | 1963 | ft->IncrRef(); |
| 1964 | fileTransferList.push_back(ft); |
1966 | 1965 | |
1967 | 1966 | retlist << QString::number(socket->GetSocketDescriptor()); |
1968 | 1967 | retlist << QString::number(ft->GetFileSize()); |