[vdr] [RFC] Shutdown rewrite for 1.5.x

Darren Salt linux at youmustbejoking.demon.co.uk
Fri Feb 16 21:23:08 CET 2007


I demand that Udo Richter may or may not have written...

> Darren Salt wrote:
>>> I guess the only situation that may cause a problem is if the VDR never
>>> shuts down, eg. has no shutdown script at all. It must have some "Min
>>> User Inactivity" setting, or else live viewing could be interrupted by
>>> the automatic update.

>> The user inactivity setting isn't relevant to that, AFAICS.

> If you want to do the update while there's no ongoing activity, then you'll
> need some kind of user inactivity, otherwise a live viewer would be
> interrupted instantly.

Local policy would seem to be the best way to handle this.

>>> For example, a plugin may be possible that reacts on a SVDRP command
>>> (request for update), and that sets a temporary shutdown script (calls
>>> Shutdown.SetShutdownCommand()). As soon as the script exists, the
>>> inactivity shutdown will be back, but instead of shutting down, the
>>> script stops VDR, installs the update and restarts.

>> (Did you mean "exits"?)

> Actually, exists, in the sense that the name of a script has been set using
> the Shutdown.SetShutdownCommand() call.

Bad choice of word - the obvious meaning of the phrase is "when the script is
created".

>> The local admin may have disabled SVDRP or the SVDRP port may be in use
>> (perhaps a buggy plugin, or maybe just bad timing). Sending a signal to
>> the running vdr process works regardless.

> Ok, a suggestion how this could be done in a simple and useful way:

> We re-define SIGHUP, so that it doesn't terminate VDR instantly, but
> instead checks for activity. If user and vdr is inactive, act just like
> sigterm, if there's some activity, ignore the signal.

> An external script could then repeat sending the SIGHUP periodically until
> termination did succeed.

That'd be start-stop-daemon, most likely, which means that the task would
have to be backgrounded. Its -R option is useful for this - something like
"-R forever/-HUP/5", I think - but it's just possible that VDR may become
inactive then active without receiving a signal in between.

However, that doesn't fit in well with runvdr, or at least with my version -
which you can find in this diff (which can be cleanly applied against an
empty directory) as vdr-1.4.5/debian/runvdr.c:
<URL:http://zap.tartarus.org/~ds/debian/dists/unstable/main/source/vdr_1.4.5-1.ds.diff.gz>
(Link: <URL:http://www.youmustbejoking.demon.co.uk/progs.sid.html#vdr>)

> Also, the SIGHUP effect is not delayed for an indefinite time and won't
> strike unexpectedly / needs thoughts on how to cancel the SIGHUP if you
> change your mind.

Sending a SIGTERM would obviously cancel it. :-)

That aside, I'd probably use SIGUSR1 as a cancellation (which should be as
simple as clearing a flag).

> And on SVDRP: Since the SVDRP rewrite is on the todo list anyway, we could
> add support to do SVDRP on unix domain sockets, not just TCP. Domain
> sockets are represented by files (like for example /etc/vdr/svdrp.socket)
> and access rights are controlled by the file system. This would allow to
> open SVDRP only for the local root, or just for the local video user group.

That could be useful. For my purposes, though, I still prefer signals :-)

-- 
| Darren Salt    | linux or ds at              | nr. Ashington, | Toon
| RISC OS, Linux | youmustbejoking,demon,co,uk | Northumberland | Army
| + Burn less waste. Use less packaging. Waste less.     USE FEWER RESOURCES.

"Pieces of nine! Pieces of nine!" ...sorry, parroty error...



More information about the vdr mailing list