From 0b9870959beb7ae6a063f73fd5fada8f1faefadb Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sat, 20 May 2017 13:01:34 +0200 Subject: [PATCH] Fixed handling remote timers --- CONTRIBUTORS | 2 ++ HISTORY | 7 ++++++- menu.c | 10 ++++------ svdrp.c | 4 +++- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index a2eeaed2..2e7bf8ae 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -2829,6 +2829,8 @@ Johann Friedrichs for fixing loading the setup.conf file in case a parameter contains the '#' character for reporting that the "Resume" button in the main menu was active even if the respective recording did not exist + for fixing a double deletion of a cTimer in case HandleRemoteModifications() returned + false Timo Helkio for reporting a hangup when replaying a TS recording with subtitles activated diff --git a/HISTORY b/HISTORY index 0ba94002..a38e941b 100644 --- a/HISTORY +++ b/HISTORY @@ -8991,7 +8991,7 @@ Video Disk Recorder Revision History current channel is listed. - Fixed a possible crash when pulling the CAM while decrypting a channel with MTD. -2017-05-18: Version 2.3.5 +2017-05-20: Version 2.3.5 - CAMs are now sent a generated EIT packet that contains a single 'present event' for the current SID, in order to avoid any parental rating dialogs. @@ -9030,3 +9030,8 @@ Video Disk Recorder Revision History Spingler). - Reduced the time before a CAM is marked as known to decrypt a particular channel to 3 seconds. +- When the connection to a peer VDR is terminated, any remote timers of that peer + are no longer shown on the local VDR. +- No longer setting a new timer's remote host name if "SVDRP peering" is turned off. +- Fixed a double deletion of a cTimer in case HandleRemoteModifications() returned + false (thanks to Johann Friedrichs). diff --git a/menu.c b/menu.c index 43ff7280..ae65f2d5 100644 --- a/menu.c +++ b/menu.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 4.27 2017/05/17 09:15:51 kls Exp $ + * $Id: menu.c 4.28 2017/05/20 13:00:21 kls Exp $ */ #include "menu.h" @@ -1328,7 +1328,7 @@ eOSState cMenuTimers::New(void) if (HasSubMenu()) return osContinue; cTimer *Timer = new cTimer; - if (*Setup.SVDRPDefaultHost) + if (Setup.SVDRPPeering && *Setup.SVDRPDefaultHost) Timer->SetRemote(Setup.SVDRPDefaultHost); return AddSubMenu(new cMenuEditTimer(Timer, true)); } @@ -1660,7 +1660,7 @@ eOSState cMenuWhatsOn::Record(void) return AddSubMenu(new cMenuEditTimer(Timer)); } cTimer *Timer = new cTimer(item->event); - if (*Setup.SVDRPDefaultHost) + if (Setup.SVDRPPeering && *Setup.SVDRPDefaultHost) Timer->SetRemote(Setup.SVDRPDefaultHost); if (cTimer *t = Timers->GetTimer(Timer)) { delete Timer; @@ -1674,7 +1674,6 @@ eOSState cMenuWhatsOn::Record(void) if (!HandleRemoteModifications(Timer)) { // must add the timer before HandleRemoteModifications to get proper log messages with timer ids Timers->Del(Timer); - delete Timer; } } if (HasSubMenu()) @@ -1944,7 +1943,7 @@ eOSState cMenuSchedule::Record(void) return AddSubMenu(new cMenuEditTimer(Timer)); } cTimer *Timer = new cTimer(item->event); - if (*Setup.SVDRPDefaultHost) + if (Setup.SVDRPPeering && *Setup.SVDRPDefaultHost) Timer->SetRemote(Setup.SVDRPDefaultHost); if (cTimer *t = Timers->GetTimer(Timer)) { delete Timer; @@ -1958,7 +1957,6 @@ eOSState cMenuSchedule::Record(void) if (!HandleRemoteModifications(Timer)) { // must add the timer before HandleRemoteModifications to get proper log messages with timer ids Timers->Del(Timer); - delete Timer; } } if (HasSubMenu()) diff --git a/svdrp.c b/svdrp.c index 993150c7..f402c21a 100644 --- a/svdrp.c +++ b/svdrp.c @@ -10,7 +10,7 @@ * and interact with the Video Disk Recorder - or write a full featured * graphical interface that sits on top of an SVDRP connection. * - * $Id: svdrp.c 4.17 2017/04/22 11:57:31 kls Exp $ + * $Id: svdrp.c 4.18 2017/05/18 15:51:24 kls Exp $ */ #include "svdrp.h" @@ -384,6 +384,8 @@ void cSVDRPClient::Close(void) SVDRPClientPoller.Del(file, false); file.Close(); socket.Close(); + LOCK_TIMERS_WRITE; + Timers->DelRemoteTimers(serverName); } }