mon: only send messages to current OSDs

When choosing a random OSD to send a message to, verify not only that
the OSD id is up but that the session is for the same instance of that OSD
by checking that the address matches.

Fixes: #7093
Backport: emperor, dumpling
Signed-off-by: Sage Weil <sage@inktank.com>
This commit is contained in:
Sage Weil 2014-01-04 22:43:26 -08:00
parent f68de9f352
commit 98ed9ac5fe

View File

@ -147,7 +147,8 @@ struct MonSessionMap {
bool backward = true, forward = true;
while (backward || forward) {
if (backward) {
if (osdmap->is_up(b->first)) {
if (osdmap->is_up(b->first) &&
osdmap->get_addr(b->first) == b->second->con->get_peer_addr()) {
s = b->second;
break;
}