From 9f2fe22074e0a0c828d7f7a5fca90c0dd31eea6d Mon Sep 17 00:00:00 2001 From: Thulinma Date: Sat, 28 Nov 2020 23:56:49 +0100 Subject: [PATCH] Fixed buffer disconnecting pushed inputs if they shared a PID with a viewer that disconnected --- src/input/input_buffer.cpp | 10 +++++----- src/input/input_buffer.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/input/input_buffer.cpp b/src/input/input_buffer.cpp index 96b7e363..ac4262b2 100644 --- a/src/input/input_buffer.cpp +++ b/src/input/input_buffer.cpp @@ -519,7 +519,7 @@ namespace Mist{ ///\todo Add tracing of earliest watched keys, to prevent data going out of memory for /// still-watching viewers if (!(users.getStatus(id) & COMM_STATUS_DISCONNECT) && (users.getStatus(id) & COMM_STATUS_SOURCE)){ - sourcePids[users.getPid(id)].insert(users.getTrack(id)); + sourcePids[id] = users.getTrack(id); // GeneratePids holds the pids of the process that generate data, so ignore those for determining if a push is ingested. if (M.trackValid(users.getTrack(id)) && !generatePids.count(users.getPid(id))){hasPush = true;} } @@ -527,11 +527,11 @@ namespace Mist{ if (!(users.getStatus(id) & COMM_STATUS_DONOTTRACK)){++connectedUsers;} } void inputBuffer::userOnDisconnect(size_t id){ - if (sourcePids.count(users.getPid(id)) && sourcePids[users.getPid(id)].count(users.getTrack(id))){ - INFO_MSG("Disconnected track %" PRIu32, users.getTrack(id)); + if (sourcePids.count(id)){ + INFO_MSG("Disconnected track %zu", sourcePids[id]); meta.refresh(); - removeTrack(users.getTrack(id)); - sourcePids[users.getPid(id)].erase(users.getTrack(id)); + removeTrack(sourcePids[id]); + sourcePids.erase(id); } } void inputBuffer::userLeadOut(){ diff --git a/src/input/input_buffer.h b/src/input/input_buffer.h index 2a78294c..84c78345 100644 --- a/src/input/input_buffer.h +++ b/src/input/input_buffer.h @@ -53,7 +53,7 @@ namespace Mist{ std::map runningProcs; // LTS std::set generatePids; - std::map > sourcePids; + std::map sourcePids; }; }// namespace Mist