Make the KDC use a multi-process model.
commit352a7e94a34c768b7b0f356afdcfdf0f31eefc91
authorRoland C. Dowdeswell <elric@imrryr.org>
Tue, 23 Apr 2013 11:35:11 +0000 (23 12:35 +0100)
committerRoland C. Dowdeswell <elric@imrryr.org>
Fri, 6 Nov 2015 20:39:30 +0000 (6 15:39 -0500)
tree8b371f6e88f74dbe4e1a783b88092cccb98044ee
parent3544bbc0b33d07198bebf5a0a7ecd55164c011d3
Make the KDC use a multi-process model.

We now fork(2) a number of separate KDC processes rather than a single
process.  By default, the number is selected by asking how many CPUs
the machine has.  We also have a master process which monitors all
of the children (which do the actual work) and it will restart kids
who die for any reason.  The children will die when the parent dies.

In the case of MacOS X, we also move the bonjour code into another
separate child as it creates threads and this is known to play
rather poorly with fork(2).  We could move this logic into a
designated child at some point in the future.

We slow down the spawning to one every 25ms to prevent instant crashes
and restarts from consuming all available system time.  This approach
may want to be revisited in the future.
kdc/connect.c
kdc/default_config.c
kdc/headers.h
kdc/kdc.h
kdc/kdc_locl.h
kdc/main.c