in wangle/example/ssl/Server.cpp [79:124]
void initCredProcessorCallbacks(
ServerBootstrap<EchoPipeline>& sb,
TLSCredProcessor& processor) {
// set up ticket seed callback
processor.addTicketCallback([&](TLSTicketKeySeeds seeds) {
if (FLAGS_enable_share_ssl_ctx) {
sb.getSharedSSLContextManager()->updateTLSTicketKeys(seeds);
} else {
// update
sb.forEachWorker([&](Acceptor* acceptor) {
if (!acceptor) {
// this condition can happen if the processor triggers before the
// server is ready / listening
return;
}
auto evb = acceptor->getEventBase();
if (!evb) {
return;
}
evb->runInEventBaseThread([acceptor, seeds] {
acceptor->setTLSTicketSecrets(
seeds.oldSeeds, seeds.currentSeeds, seeds.newSeeds);
});
});
}
});
// Reconfigure SSL when we detect cert or CA changes.
processor.addCertCallback([&] {
if (FLAGS_enable_share_ssl_ctx) {
sb.getSharedSSLContextManager()->reloadSSLContextConfigs();
} else {
sb.forEachWorker([&](Acceptor* acceptor) {
if (!acceptor) {
return;
}
auto evb = acceptor->getEventBase();
if (!evb) {
return;
}
evb->runInEventBaseThread(
[acceptor] { acceptor->resetSSLContextConfigs(); });
});
}
});
}