in src/enclave_proc/mod.rs [191:216]
fn try_handle_enclave_event(connection: &Connection) -> NitroCliResult<HandledEnclaveEvent> {
// Check if this is an enclave connection.
if let Some(mut enc_events) = connection
.get_enclave_event_flags()
.map_err(|e| e.add_subaction("Failed to get enclave events flag".to_string()))?
{
let enc_hup = enc_events.contains(EpollFlags::EPOLLHUP);
// Check if non-hang-up events have occurred.
enc_events.remove(EpollFlags::EPOLLHUP);
if !enc_events.is_empty() {
warn!("Received unexpected enclave event(s): {:?}", enc_events);
}
// If we received the hang-up event we need to terminate cleanly.
if enc_hup {
warn!("Received hang-up event from the enclave. Enclave process will shut down.");
return Ok(HandledEnclaveEvent::HangUp);
}
// Non-hang-up enclave events are not fatal.
return Ok(HandledEnclaveEvent::Unexpected);
}
Ok(HandledEnclaveEvent::None)
}