From: Xiao Guodong Date: Mon, 12 Aug 2019 07:09:57 +0000 (+0800) Subject: mds: reject sessionless messages X-Git-Tag: v15.1.0~1565^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=c5382c5c92850d40e036b9dc0b469b1e7731c8a0;p=ceph-ci.git mds: reject sessionless messages mds should reject sessionless messages. Fixes: https://tracker.ceph.com/issues/41329 Signed-off-by: Xiao Guodong --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 92ad6e8a5c9..f54cd46a643 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -442,6 +442,9 @@ void Server::handle_client_session(const cref_t &m) if (!session) { dout(0) << " ignoring sessionless msg " << *m << dendl; + auto reply = make_message(CEPH_SESSION_REJECT); + reply->metadata["error_string"] = "sessionless"; + mds->send_message(reply, m->get_connection()); return; } @@ -1230,8 +1233,13 @@ void Server::handle_client_reconnect(const cref_t &m) << (m->has_more() ? " (more)" : "") << dendl; client_t from = m->get_source().num(); Session *session = mds->get_session(m); - if (!session) + if (!session) { + dout(0) << " ignoring sessionless msg " << *m << dendl; + auto reply = make_message(CEPH_SESSION_REJECT); + reply->metadata["error_string"] = "sessionless"; + mds->send_message(reply, m->get_connection()); return; + } if (!mds->is_reconnect() && mds->get_want_state() == CEPH_MDS_STATE_RECONNECT) { dout(10) << " we're almost in reconnect state (mdsmap delivery race?); waiting" << dendl;