https://git.cyrus.foundation/rI4cc2d21871538774bd56137d44d20665fad3b965
On 12/29/2015 02:38 PM, Thomas Jarosch wrote:
Hi Ken,
Am 29.12.2015 um 16:32 schrieb Ken Murchison:
If all that can be done safely in the signal handler is setting a global
variable,
I might just scrap the heartbeat functionality. The alternative is that the
actual method processin
code will have periodically check the status of the global variable. Or do you
have a more creative idea?
checking a global variable is how it's done usually. Or if the HTTP server
is using some kind of event driven framework, set up a timer instead of SIGARLM.
On linux there's signalfd(), but that's non-portable, so a no no for cyrus.
The global variable should be of type "volatile sig_atomic_t".
Random side note: What was the main motivation for implementing
an own HTTP server including authentication stuff / chunked encoding etc?
Was implementing an Apache httpd module in C considered without
redoing the whole HTTP protocol layer? Just wondering,
we are doing our stuff at dayjob as a C++ apache module.
You just register a handler for URIs / mime-types you are interested in.
Other HTTP server like ngix would probably work, too.
Cheers,
Thomas
--
Kenneth Murchison
Principal Systems Software Engineer
Carnegie Mellon University