authgraph: cope with LocalTa being dropped

When a LocalTa instance is used in a fuzzer, it gets dropped at the end
of processing each fuzz input.  This makes the `mpsc::channel`s fail,
so update to cope with this.

Bug: 316075932
Test: run fuzzer on Cuttlefish
Change-Id: I069f441013e269f652cbe1ff3053606f9bcb2dfd
This commit is contained in:
David Drysdale
2023-12-18 17:22:15 +00:00
parent c61a19bc28
commit b108e8cd87

View File

@@ -22,6 +22,7 @@ use authgraph_core::{
ta::{AuthGraphTa, Role},
};
use authgraph_hal::channel::SerializedChannel;
use log::error;
use std::cell::RefCell;
use std::rc::Rc;
use std::sync::{mpsc, Mutex};
@@ -57,10 +58,23 @@ impl LocalTa {
);
// Loop forever processing request messages.
loop {
let req_data: Vec<u8> = in_rx.recv().expect("failed to receive next req");
let req_data: Vec<u8> = match in_rx.recv() {
Ok(data) => data,
Err(_) => {
error!("local TA failed to receive request!");
break;
}
};
let rsp_data = ta.process(&req_data);
out_tx.send(rsp_data).expect("failed to send out rsp");
match out_tx.send(rsp_data) {
Ok(_) => {}
Err(_) => {
error!("local TA failed to send out response");
break;
}
}
}
error!("local TA terminating!");
});
Ok(Self {
channels: Mutex::new(Channels { in_tx, out_rx }),