Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
txbuf.clear();
session_stream_handlers = std::move(mover.session_stream_handlers);
session_comp_handlers = std::move(mover.session_comp_handlers);
- return replace_shutdown_socket(std::move(mover.socket));
+ if (has_socket()) {
+ return replace_shutdown_socket(std::move(mover.socket));
+ } else {
+ set_socket(std::move(mover.socket));
+ return seastar::now();
+ }
}
void FrameAssemblerV2::start_recording()
uint64_t new_connect_seq,
uint64_t new_msg_seq)
{
- trigger_state(state_t::REPLACING, io_state_t::delay, false);
- ceph_assert_always(has_socket);
+ ceph_assert_always(has_socket || state == state_t::CONNECTING);
ceph_assert_always(!mover.socket->is_shutdown());
+ trigger_state(state_t::REPLACING, io_state_t::delay, false);
if (is_socket_valid) {
frame_assembler->shutdown_socket();
is_socket_valid = false;
}
);
is_socket_valid = true;
+ has_socket = true;
if (reconnect) {
connect_seq = new_connect_seq;