VDR kennt via "PUTE" gesendetes EPG erst nach Neustart

  • Ich versuche das jetzt schon eine Weile in meinem Code einzugrenzen, aber habe langsam die Vermutung der VDR könnte da schuld sein.


    Ich schreibe für einen Kanal ohne EPG einige Events via "PUTE". Der VDR akzeptiert diese Übermittlung auch anstandslos und quittiert mit Erfolgsmeldung.


    Wenn ich nun direkt danach oder wenige Minuten danach mit "LSTE" das EPG für diesen Kanal abrufen will, dann bekomme ich:


    Code
    1. $ svdrpsend lste S19.2E-133-7-169
    2. 220 manuelsvdr SVDRP VideoDiskRecorder 2.4.6; Sun Jan 3 17:24:13 2021; UTF-8
    3. 550 No schedule found
    4. 221 manuelsvdr closing connection


    Ein "LSTE" ohne Parameter gibt unter anderem auch meine neuen Einträge zurück. Sie sind also da und sauber angekommen. Der VDR hat sie aber "irgendwie" nicht korrekt mit einem Kanal "verbunden" so das sie gezielt abgerufen werden könnten.


    Einmal "systemctl restart vdr" und meine via PUTE gesendeten Einträge werden auch via "LSTE $CHANNELID" ausgegeben.


    Warum braucht der VDR einen Neustart um via PUTE gesendetes EPG selber zu kennen bzw. via "LSTE $CHANNELID" zurückzugeben?

    Werden fehlende "Schedule"s beim Senden via PUTE nicht so erzeugt das sie auch vom VDR nutzbar sind?

  • Ich vermute das hat mit dem DummySchedule in


    const cSchedule *cSchedules::GetSchedule(const cChannel *Channel, bool AddIfMissing) const


    zu tun (der Kommentar dort zeigt ja schon, dass das nicht besonders schön ist ;-).

    Versuch bitte mal (ungetestet):

  • Ich denke mal, damit sollte es allgemein funktionieren (der obige Patch entfällt dann):