Open CGamesPlay opened 3 weeks ago
My proposal would be to:
Endpoint::connect_with_transport_config(&self, node_addr: impl Into<NodeAddr>, alpn: &[u8], transport_config: TransportConfig)
(modulo some bikeshedding).connect_quinn
to take the TransportConfig
as well, so that the above can work. But in the first instance keep the current default TransportConfig but moved into connect
, things work now for many folks and we need to be careful changing those values. I'd like to give folks a chance to try things out first before changing the defaults.Builder::transport_config
is used use that as the default in connect
as well as for accepting.
I was advised to create an issue from https://github.com/n0-computer/iroh/discussions/2860#discussioncomment-11100552. Iroh-net's Endpoint::connect is hard-coded to use a TransportConfig of every-second keepalives with 30-second timeouts (latter default from Quinn), regardless of any TransportConfig that was passed to Builder::transport_config (which is only used for incoming connections). This effectively means that you can only increase the keepalive interval and reduce the timeout from these defaults.
I can't think of a great reason that the incoming and outgoing TransportConfig values should ever be different, so I think the default should be to use the Endpoint's configured values for outgoing connections. However, if there is a use case for this (perhaps different ALPNs should have different timeouts), a method like
connect_with(node_addr, alpn, transport_config)
could work well.