fix: bound remote iroh line reads
This commit is contained in:
parent
fe818fe0ab
commit
ccd40f0224
5 changed files with 91 additions and 68 deletions
|
|
@ -1,6 +1,6 @@
|
|||
//! Outbound Iroh peer request helpers.
|
||||
|
||||
use crate::wire::{finish_iroh_send, read_iroh_line};
|
||||
use crate::wire::{PEER_CONTROL_LINE_MAX, WIRE_REQUEST_LINE_MAX, finish_iroh_send, read_iroh_line};
|
||||
use crate::{LocalNode, NodeError};
|
||||
use geth_control::{
|
||||
OverlayWireRequest, OverlayWireResponse, PeerControlRequest, PeerControlResponse,
|
||||
|
|
@ -8,7 +8,6 @@ use geth_control::{
|
|||
};
|
||||
use geth_discovery::{DiscoverySource, PeerCard};
|
||||
use geth_store::Store;
|
||||
use tokio::io::{AsyncBufReadExt, BufReader};
|
||||
|
||||
pub(crate) async fn request_peer_control(
|
||||
node: &LocalNode,
|
||||
|
|
@ -43,7 +42,7 @@ pub(crate) async fn request_peer_control(
|
|||
.connect(node_addr, geth_iroh::ALPN_CONTROL)
|
||||
.await
|
||||
.map_err(|error| NodeError::IrohPeer(error.to_string()))?;
|
||||
let (mut send, recv) = conn
|
||||
let (mut send, mut recv) = conn
|
||||
.open_bi()
|
||||
.await
|
||||
.map_err(|error| NodeError::IrohPeer(error.to_string()))?;
|
||||
|
|
@ -56,12 +55,7 @@ pub(crate) async fn request_peer_control(
|
|||
.await
|
||||
.map_err(|error| NodeError::IrohPeer(error.to_string()))?;
|
||||
drop(send);
|
||||
let mut response_line = String::new();
|
||||
let mut reader = BufReader::new(recv);
|
||||
reader
|
||||
.read_line(&mut response_line)
|
||||
.await
|
||||
.map_err(|error| NodeError::IrohPeer(error.to_string()))?;
|
||||
let response_line = read_iroh_line(&mut recv, PEER_CONTROL_LINE_MAX).await?;
|
||||
let response = geth_control::decode_peer_response(&response_line)?;
|
||||
match &response {
|
||||
PeerControlResponse::SshCertSynced {
|
||||
|
|
@ -176,7 +170,7 @@ pub(crate) async fn request_pipe_wire(
|
|||
.map_err(|error| NodeError::IrohPeer(error.to_string()))?;
|
||||
finish_iroh_send(&mut send).await?;
|
||||
drop(send);
|
||||
let text = read_iroh_line(&mut recv, 16 * 1024 * 1024).await?;
|
||||
let text = read_iroh_line(&mut recv, WIRE_REQUEST_LINE_MAX).await?;
|
||||
let response = geth_control::decode_pipe_wire_response(&text)?;
|
||||
match &response {
|
||||
PipeWireResponse::Sent {
|
||||
|
|
@ -232,7 +226,7 @@ pub(crate) async fn request_overlay_wire(
|
|||
.map_err(|error| NodeError::IrohPeer(error.to_string()))?;
|
||||
finish_iroh_send(&mut send).await?;
|
||||
drop(send);
|
||||
let text = read_iroh_line(&mut recv, 16 * 1024 * 1024).await?;
|
||||
let text = read_iroh_line(&mut recv, WIRE_REQUEST_LINE_MAX).await?;
|
||||
let response = geth_control::decode_overlay_wire_response(&text)?;
|
||||
match &response {
|
||||
OverlayWireResponse::PacketAccepted {
|
||||
|
|
|
|||
Loading…
Reference in a new issue