Manapi Http

Blocked Signals

Managing Blocked Signals

In networking, errors can sometimes generate special signals that need to be handled. If ignored, these signals may terminate our program unexpectedly.

#include <manapihttp/ManapiEventLoop.hpp>
#include <manapihttp/std/ManapiAsyncContext.hpp>
 
int main(int argc, char *argv[]) {
    auto blockedsignals = manapi::async::context::blockedsignals();
 
    // Ignore SIGABRT
    sigaddset(blockedsignals.get(), SIGABRT);
    pthread_sigmask(SIG_BLOCK, blockedsignals.get(), nullptr);
 
    manapi::async::context::gbs(std::move(blockedsignals));
 
    return 0;
}

Information

manapi::async::context::blockedsignals() returns a sigset_t with SIGPIPE already blocked by default.

For most use cases, the default configuration is sufficient:

#include <manapihttp/ManapiEventLoop.hpp>
#include <manapihttp/std/ManapiAsyncContext.hpp>
 
int main(int argc, char *argv[]) {
    manapi::async::context::gbs(manapi::async::context::blockedsignals());
 
    return 0;
}