mirror of
https://gitlab.com/pulsechaincom/lighthouse-pulse.git
synced 2025-01-07 03:22:20 +00:00
Merge pull request #3926 from divagant-martian/stream-timeout-blob-bug
send stream terminators
This commit is contained in:
commit
6d2dff66a0
@ -1,7 +1,7 @@
|
|||||||
#![allow(clippy::type_complexity)]
|
#![allow(clippy::type_complexity)]
|
||||||
#![allow(clippy::cognitive_complexity)]
|
#![allow(clippy::cognitive_complexity)]
|
||||||
|
|
||||||
use super::methods::{GoodbyeReason, RPCCodedResponse, RPCResponseErrorCode, ResponseTermination};
|
use super::methods::{GoodbyeReason, RPCCodedResponse, RPCResponseErrorCode};
|
||||||
use super::outbound::OutboundRequestContainer;
|
use super::outbound::OutboundRequestContainer;
|
||||||
use super::protocol::{max_rpc_size, InboundRequest, Protocol, RPCError, RPCProtocol};
|
use super::protocol::{max_rpc_size, InboundRequest, Protocol, RPCError, RPCProtocol};
|
||||||
use super::{RPCReceived, RPCSend, ReqId};
|
use super::{RPCReceived, RPCSend, ReqId};
|
||||||
@ -933,13 +933,8 @@ where
|
|||||||
// continue sending responses beyond what we would expect. Here
|
// continue sending responses beyond what we would expect. Here
|
||||||
// we simply terminate the stream and report a stream
|
// we simply terminate the stream and report a stream
|
||||||
// termination to the application
|
// termination to the application
|
||||||
let termination = match protocol {
|
|
||||||
Protocol::BlocksByRange => Some(ResponseTermination::BlocksByRange),
|
|
||||||
Protocol::BlocksByRoot => Some(ResponseTermination::BlocksByRoot),
|
|
||||||
_ => None, // all other protocols are do not have multiple responses and we do not inform the user, we simply drop the stream.
|
|
||||||
};
|
|
||||||
|
|
||||||
if let Some(termination) = termination {
|
if let Some(termination) = protocol.terminator() {
|
||||||
return Poll::Ready(ConnectionHandlerEvent::Custom(Ok(
|
return Poll::Ready(ConnectionHandlerEvent::Custom(Ok(
|
||||||
RPCReceived::EndOfStream(request_id, termination),
|
RPCReceived::EndOfStream(request_id, termination),
|
||||||
)));
|
)));
|
||||||
|
@ -206,6 +206,22 @@ pub enum Encoding {
|
|||||||
SSZSnappy,
|
SSZSnappy,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Protocol {
|
||||||
|
pub(crate) fn terminator(self) -> Option<ResponseTermination> {
|
||||||
|
match self {
|
||||||
|
Protocol::Status => None,
|
||||||
|
Protocol::Goodbye => None,
|
||||||
|
Protocol::BlocksByRange => Some(ResponseTermination::BlocksByRange),
|
||||||
|
Protocol::BlocksByRoot => Some(ResponseTermination::BlocksByRoot),
|
||||||
|
Protocol::BlobsByRange => Some(ResponseTermination::BlobsByRange),
|
||||||
|
Protocol::BlobsByRoot => Some(ResponseTermination::BlobsByRoot),
|
||||||
|
Protocol::Ping => None,
|
||||||
|
Protocol::MetaData => None,
|
||||||
|
Protocol::LightClientBootstrap => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl std::fmt::Display for Protocol {
|
impl std::fmt::Display for Protocol {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
let repr = match self {
|
let repr = match self {
|
||||||
|
Loading…
Reference in New Issue
Block a user