fix bug where containers are not connecting
This commit is contained in:
parent
9e9b906598
commit
7349bf16e1
@ -1,6 +1,7 @@
|
||||
use super::challenge::{update_server::UpdateServer, Empty, Keys, NodeUpdate};
|
||||
use crate::{datastore::State, grpc::challenge::update_server::Update};
|
||||
use detee_sgx::RaTlsConfig;
|
||||
use rustls::pki_types::CertificateDer;
|
||||
use std::{pin::Pin, sync::Arc};
|
||||
use tokio::sync::broadcast::Sender;
|
||||
use tokio_stream::{Stream, StreamExt};
|
||||
@ -50,7 +51,7 @@ impl MyServer {
|
||||
let tls_acceptor = TlsAcceptor::from(Arc::new(tls));
|
||||
|
||||
loop {
|
||||
let (conn, _addr) = match listener.accept().await {
|
||||
let (conn, addr) = match listener.accept().await {
|
||||
Ok(incoming) => incoming,
|
||||
Err(e) => {
|
||||
println!("Error accepting connection: {}", e);
|
||||
@ -85,7 +86,12 @@ impl MyServer {
|
||||
conn.unwrap()
|
||||
};
|
||||
|
||||
let svc = ServiceBuilder::new().service(svc);
|
||||
let extension_layer =
|
||||
tower_http::add_extension::AddExtensionLayer::new(Arc::new(ConnInfo {
|
||||
addr,
|
||||
certificates,
|
||||
}));
|
||||
let svc = ServiceBuilder::new().layer(extension_layer).service(svc);
|
||||
|
||||
if let Err(e) = http
|
||||
.serve_connection(
|
||||
@ -103,6 +109,12 @@ impl MyServer {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct ConnInfo {
|
||||
addr: std::net::SocketAddr,
|
||||
certificates: Vec<CertificateDer<'static>>,
|
||||
}
|
||||
|
||||
#[tonic::async_trait]
|
||||
impl Update for MyServer {
|
||||
type GetUpdatesStream = Pin<Box<dyn Stream<Item = Result<NodeUpdate, Status>> + Send>>;
|
||||
@ -115,8 +127,9 @@ impl Update for MyServer {
|
||||
&self,
|
||||
req: Request<Streaming<NodeUpdate>>,
|
||||
) -> Result<Response<Self::GetUpdatesStream>, Status> {
|
||||
let conn_info = req.extensions().get::<Arc<ConnInfo>>().unwrap();
|
||||
self.state.increase_mratls_conns();
|
||||
let remote_ip = req.remote_addr().unwrap().ip().to_string();
|
||||
let remote_ip = conn_info.addr.ip().to_string();
|
||||
let tx = self.tx.clone();
|
||||
let mut rx = self.tx.subscribe();
|
||||
let mut inbound = req.into_inner();
|
||||
|
Loading…
Reference in New Issue
Block a user