requeue_sent();
if (out_queue.empty() && state >= START_ACCEPT &&
- state <= ACCEPTING_SESSION) {
+ state <= ACCEPTING_SESSION && !replacing) {
ldout(cct, 10) << __func__ << " with nothing to send and in the half "
<< " accept state just closed" << dendl;
connection->write_lock.unlock();
CtPtr ProtocolV2::ready() {
ldout(cct, 25) << __func__ << dendl;
+ replacing = false;
+
// make sure no pending tick timer
if (connection->last_tick_id) {
connection->center->delete_time_event(connection->last_tick_id);
connection->inject_delay();
connection->lock.lock();
- replacing = false;
if (r < 0) {
ldout(cct, 1) << __func__ << " existing race replacing process for addr = "
connection->inject_delay();
connection->lock.lock();
- replacing = false;
if (r < 0) {
ldout(cct, 1) << __func__ << " existing race replacing process for addr = "