Associate a sending message with the connection inside the pipe_lock.
This way if a racing thread tries to steal these messages it will
be sure to reset the con point *after* we do such that it the con
pointer is valid in encode_payload() (and later).
This may be part of #3678.
Signed-off-by: Sage Weil <sage@inktank.com>
(cherry picked from commit
a058f16113efa8f32eb5503d5443aa139754d479)
sent.push_back(m);
m->get();
}
- pipe_lock.Unlock();
-
- ldout(msgr->cct,20) << "writer encoding " << m->get_seq() << " " << m << " " << *m << dendl;
// associate message with Connection (for benefit of encode_payload)
m->set_connection(connection_state->get());
+ pipe_lock.Unlock();
+
+ ldout(msgr->cct,20) << "writer encoding " << m->get_seq() << " " << m << " " << *m << dendl;
+
// encode and copy out of *m
m->encode(connection_state->get_features(), !msgr->cct->_conf->ms_nocrc);