in src/enclave_proc/connection.rs [297:328]
fn write_reply(&self, reply: &EnclaveProcessReply) -> NitroCliResult<()> {
let mut lock = self.data.lock().map_err(|e| {
new_nitro_cli_failure!(
&format!("Failed to acquire lock: {:?}", e),
NitroCliErrorEnum::LockAcquireFailure
)
})?;
if lock.input_stream.is_none() {
return Err(new_nitro_cli_failure!(
"Cannot write message to connection",
NitroCliErrorEnum::SocketError
));
}
let mut stream = lock.input_stream.as_mut().unwrap();
let mut reply_bytes = Vec::new();
ciborium::into_writer(reply, &mut reply_bytes).map_err(|e| {
new_nitro_cli_failure!(
&format!("Failed to serialize reply: {:?}", e),
NitroCliErrorEnum::SerdeError
)
})?;
write_u64_le(&mut stream, reply_bytes.len() as u64)
.map_err(|e| e.add_subaction("Write reply".to_string()))?;
stream.write_all(&reply_bytes).map_err(|e| {
new_nitro_cli_failure!(
&format!("Failed to write to stream: {:?}", e),
NitroCliErrorEnum::SocketError
)
})
}