From c0cb1aff0afa21886ddf4c30545e97e565df8cd7 Mon Sep 17 00:00:00 2001 From: Noah Watkins Date: Tue, 19 Jul 2022 13:56:52 -0700 Subject: [PATCH] rpc: reset transport version on connect This is needed for the case in which a peer on the other end of a reconnect_transport is downgraded. unless we reset the version on reconnect then we'll get a policy violation if the peer responds with a lower version than the transport had been upgraded to. Signed-off-by: Noah Watkins --- src/v/rpc/transport.cc | 1 + src/v/rpc/transport.h | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/v/rpc/transport.cc b/src/v/rpc/transport.cc index 9d10007916646..70505c395a2bf 100644 --- a/src/v/rpc/transport.cc +++ b/src/v/rpc/transport.cc @@ -83,6 +83,7 @@ void transport::reset_state() { _correlation_idx = 0; _last_seq = sequence_t{0}; _seq = sequence_t{0}; + _version = transport_version::v1; } ss::future<> diff --git a/src/v/rpc/transport.h b/src/v/rpc/transport.h index abbdf6d078cd0..c59d94a64485c 100644 --- a/src/v/rpc/transport.h +++ b/src/v/rpc/transport.h @@ -112,6 +112,8 @@ class transport final : public net::base_transport { * version level used when dispatching requests. this value may change * during the lifetime of the transport. for example the version may be * upgraded if it is discovered that a server supports a newer version. + * + * reset to v1 in reset_state() to support reconnect_transport. */ transport_version _version{transport_version::v1};