Do not accidentally clear incorrect osd_peer_fds entries
This commit is contained in:
@@ -72,8 +72,12 @@ void osd_messenger_t::stop_client(int peer_fd, bool force, bool force_delete)
|
|||||||
cl->peer_state = PEER_STOPPED;
|
cl->peer_state = PEER_STOPPED;
|
||||||
if (cl->osd_num)
|
if (cl->osd_num)
|
||||||
{
|
{
|
||||||
// ...and forget OSD peer
|
auto osd_it = osd_peer_fds.find(cl->osd_num);
|
||||||
osd_peer_fds.erase(cl->osd_num);
|
if (osd_it != osd_peer_fds.end() && osd_it->second == cl->peer_fd)
|
||||||
|
{
|
||||||
|
// ...and forget OSD peer
|
||||||
|
osd_peer_fds.erase(osd_it);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#ifndef __MOCK__
|
#ifndef __MOCK__
|
||||||
// Then remove FD from the eventloop so we don't accidentally read something
|
// Then remove FD from the eventloop so we don't accidentally read something
|
||||||
|
|||||||
@@ -121,6 +121,7 @@ void pretend_connected(cluster_client_t *cli, osd_num_t osd_num)
|
|||||||
cli->msgr.osd_peer_fds[osd_num] = peer_fd;
|
cli->msgr.osd_peer_fds[osd_num] = peer_fd;
|
||||||
cli->msgr.clients[peer_fd] = new osd_client_t();
|
cli->msgr.clients[peer_fd] = new osd_client_t();
|
||||||
cli->msgr.clients[peer_fd]->osd_num = osd_num;
|
cli->msgr.clients[peer_fd]->osd_num = osd_num;
|
||||||
|
cli->msgr.clients[peer_fd]->peer_fd = peer_fd;
|
||||||
cli->msgr.clients[peer_fd]->peer_state = PEER_CONNECTED;
|
cli->msgr.clients[peer_fd]->peer_state = PEER_CONNECTED;
|
||||||
cli->msgr.wanted_peers.erase(osd_num);
|
cli->msgr.wanted_peers.erase(osd_num);
|
||||||
cli->msgr.repeer_pgs(osd_num);
|
cli->msgr.repeer_pgs(osd_num);
|
||||||
|
|||||||
Reference in New Issue
Block a user