# This patch fixes a bug in handling the tfRecording flag in the SVDRP commands MODT
# and UPDT. The tfRecording flag must only be handled by the VDR that actually hosts
# and processes the timer.
#
--- svdrp.c 2018/03/19 12:16:33 5.0
+++ svdrp.c 2018/04/19 09:45:08
@@ -2036,6 +2036,7 @@
LOCK_TIMERS_WRITE;
Timers->SetExplicitModify();
if (cTimer *Timer = Timers->GetById(Id)) {
+ bool IsRecording = Timer->HasFlags(tfRecording);
cTimer t = *Timer;
if (strcasecmp(tail, "ON") == 0)
t.SetFlags(tfActive);
@@ -2046,6 +2047,10 @@
return;
}
*Timer = t;
+ if (IsRecording)
+ Timer->SetFlags(tfRecording);
+ else
+ Timer->ClrFlags(tfRecording);
Timers->SetModified();
isyslog("SVDRP %s < %s modified timer %s (%s)", Setup.SVDRPHostName, *clientName, *Timer->ToDescr(), Timer->HasFlags(tfActive) ? "active" : "inactive");
Reply(250, "%d %s", Timer->Id(), *Timer->ToText(true));
@@ -2478,12 +2483,18 @@
if (Timer->Parse(Option)) {
LOCK_TIMERS_WRITE;
if (cTimer *t = Timers->GetTimer(Timer)) {
+ bool IsRecording = t->HasFlags(tfRecording);
t->Parse(Option);
delete Timer;
Timer = t;
+ if (IsRecording)
+ Timer->SetFlags(tfRecording);
+ else
+ Timer->ClrFlags(tfRecording);
isyslog("SVDRP %s < %s updated timer %s", Setup.SVDRPHostName, *clientName, *Timer->ToDescr());
}
else {
+ Timer->ClrFlags(tfRecording);
Timers->Add(Timer);
isyslog("SVDRP %s < %s added timer %s", Setup.SVDRPHostName, *clientName, *Timer->ToDescr());
}