Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b108e8cd authored by David Drysdale's avatar David Drysdale
Browse files

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
parent c61a19bc
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -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 }),