if (existing == connection) {
existing = nullptr;
}
+ if (existing && existing->protocol->proto_type != 1) {
+ ldout(cct,1) << __func__ << " existing " << existing << " proto "
+ << existing->protocol.get() << " version is "
+ << existing->protocol->proto_type << ", marking down" << dendl;
+ existing->mark_down();
+ existing = nullptr;
+ }
if (existing) {
// There is no possible that existing connection will acquire this
existing->lock.lock(); // skip lockdep check (we are locking a second
// AsyncConnection here)
- ProtocolV1 *exproto = dynamic_cast<ProtocolV1 *>(existing->protocol.get());
ldout(cct,10) << __func__ << " existing=" << existing << " exproto="
- << exproto << dendl;
- assert(exproto->proto_type == 1);
-
- if (!exproto) {
- ldout(cct, 1) << __func__ << " existing=" << existing << dendl;
- ceph_assert(false);
- }
+ << existing->protocol.get() << dendl;
+ ProtocolV1 *exproto = dynamic_cast<ProtocolV1 *>(existing->protocol.get());
+ ceph_assert(exproto);
+ ceph_assert(exproto->proto_type == 1);
if (exproto->state == CLOSED) {
ldout(cct, 1) << __func__ << " existing " << existing
connection->lock.unlock();
AsyncConnectionRef existing = messenger->lookup_conn(*connection->peer_addrs);
+ if (existing &&
+ existing->protocol->proto_type != 2) {
+ ldout(cct,1) << __func__ << " existing " << existing << " proto "
+ << existing->protocol.get() << " version is "
+ << existing->protocol->proto_type << ", marking down" << dendl;
+ existing->mark_down();
+ existing = nullptr;
+ }
+
connection->inject_delay();
connection->lock.lock();
connection->lock.unlock();
AsyncConnectionRef existing = messenger->lookup_conn(*connection->peer_addrs);
+ if (existing &&
+ existing->protocol->proto_type != 2) {
+ ldout(cct,1) << __func__ << " existing " << existing << " proto "
+ << existing->protocol.get() << " version is "
+ << existing->protocol->proto_type << ", marking down" << dendl;
+ existing->mark_down();
+ existing = nullptr;
+ }
+
connection->inject_delay();
connection->lock.lock();