v0.2.7-pre.007-fix.001

This commit is contained in:
2026-08-22 21:00:29 +02:00
parent b67fa89f44
commit 4c540d67a7
4 changed files with 160 additions and 16 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-onchain-transport-lib/src/ws_session.rs
// version: 6
// version: 7
use futures_util::SinkExt; // rust-rules: trait-import
use futures_util::StreamExt; // rust-rules: trait-import
@@ -280,7 +280,7 @@ enum WsActorIoOutcome {
}
enum WsReconnectOutcome {
Connected { websocket: WsPhysicalStream },
Connected { websocket: std::boxed::Box<WsPhysicalStream> },
ShutdownRequested { deadline: tokio::time::Instant },
HandlesDropped,
Exhausted,
@@ -293,7 +293,7 @@ enum WsReconnectControlOutcome {
}
enum WsConnectAttemptOutcome {
Connected { websocket: WsPhysicalStream, handshake_status: u16 },
Connected { websocket: std::boxed::Box<WsPhysicalStream>, handshake_status: u16 },
Retry,
ShutdownRequested { deadline: tokio::time::Instant },
HandlesDropped,
@@ -481,7 +481,7 @@ async fn run_ws_session_actor(
)
.await;
match recovery {
WsReconnectOutcome::Connected { websocket: replacement } => websocket = replacement,
WsReconnectOutcome::Connected { websocket: replacement } => websocket = *replacement,
WsReconnectOutcome::ShutdownRequested { deadline } => {
finish_disconnected_shutdown(
id,
@@ -522,7 +522,7 @@ async fn run_ws_session_actor(
)
.await;
match recovery {
WsReconnectOutcome::Connected { websocket: replacement } => websocket = replacement,
WsReconnectOutcome::Connected { websocket: replacement } => websocket = *replacement,
WsReconnectOutcome::ShutdownRequested { deadline } => {
finish_disconnected_shutdown(
id,
@@ -610,7 +610,7 @@ async fn recover_websocket_session(
handshake_status,
"replacement physical WebSocket connection established"
);
websocket
*websocket
},
WsConnectAttemptOutcome::Retry => {
attempt = attempt.saturating_add(1);
@@ -645,7 +645,7 @@ async fn recover_websocket_session(
continuity_gap_count = *continuity_gap_count,
"physical WebSocket reconnect completed and retry budget reset"
);
return WsReconnectOutcome::Connected { websocket };
return WsReconnectOutcome::Connected { websocket: std::boxed::Box::new(websocket) };
},
WsActorIoOutcome::ShutdownRequested { deadline } => return WsReconnectOutcome::ShutdownRequested { deadline },
WsActorIoOutcome::RemoteClosed => {
@@ -872,7 +872,7 @@ async fn connect_replacement_websocket(
result = &mut connect => {
return match result {
std::result::Result::Ok((websocket, response)) => WsConnectAttemptOutcome::Connected {
websocket,
websocket: std::boxed::Box::new(websocket),
handshake_status: response.status().as_u16(),
},
std::result::Result::Err(_) => {