Carlos Carvalho wrote:
It seems this has been sent this only to me but since Simon asks
everybody (at the end) I'm answering to the list.

Ah, sorry. WrongButtonError.


Exactly, that's what I had in mind. The savelog script in Debian can
also do it.

Another new thing I learned today. I don't like savelog's compression scheme though. Ignoring the older files, is seems to to

mv log.0 log.1
compress log.1
touch log.0

and then the signal can be sent. Since the old file (renamed to log.1) can still be written 'till the signal is sent, and some time afterwards, then the compressedfile might be written to and corrupted. I think the scheme where log.0 and log.1 are uncompressed and only log.2, log3 etc are compressed is much safer.

 >Adding the signal is slightly non-trivial (there's a whole set of
 >processes which might have the log file open) but it should be possible.

I trust you :-)

I'll get some code out this week sometime, unless I get too busy.

 >Does anybody have an opinion on the best signal to use , given that
 >SIGHUP is already taken?

I'd go with USR2 as you suggested. HUP can also do it in addition to
what it already does, like some other daemons do.

SIGUSR2 it is.

One thing that is different in dnsmasq compared to many other daemons
is that HUP does not re-read the main config, so it's not a full
reload. I guess that's because dnsmasq has a lot of state to preserve
(other processes, cache, leases). Is this correct?

The overriding reason is that some start-up actions need root permissions, which get thrown away after start-up. Imagine that you change dnsmasq.conf to enable DHCP and SIGHUP. Dnsmasq re-reads the file and needs to open port 68 to do DHCP, but that needs root permissions.

The state isn't a problem: the only thing that needs to be kept is the lease database, and that's safely in a file. Dnsmasq is designed to be re-startable at any point without loosing data. It would be possible to make a root process which forks the real process, and can kill it and re-fork a new one with new configuration, but that's just equivalent to killing and restarting the daemon anyway, and costs another process in memory at all times.

Cheers,

Simon.








_______________________________________________
Dnsmasq-discuss mailing list
Dnsmasq-discuss@lists.thekelleys.org.uk
http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss



Reply via email to