Description
Description
With #3268 was decided to deprecate ConnectionHandler::{In,Out}boundOpenInfo
.
#5242 made it official, but there's a bug with these deprecations:
storing the upgrade info in a VecDeque
loses the order significance match they prevously had with StreamUpgrade
.
Example with request-response
after #3914 was merged:
Behaviour
notifies handler with a requestHandler
puts the request onrequested_outbound
and asks theSwarm
for aOutboundSubstreamRequest
Handler
receives a newFullyNegotiatedOutbound
from theSwarm
and pops the request fromrequested_outbound
.
Problem:
the popped request may not match inserted request in requested_outbound
and therefore the negotiated Protocol
with the outbound peer as Swarm
's negotiating_out
is a FuturesUnordered
.
This is specially problematic in the Ethereum consensus spec as the negotiated protocol matches the request type and the outbound peer ends up discarding the request as it doesn't match the protocol negotiated.
We should rollback the deprecation attributes of ConnectionHandler::{In,Out}boundOpenInfo
at least
cc @elenaf9 @dariusc93