From fb5a244915015452aefcb5797a2b814fa5a1acfa Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 9 Sep 2014 16:11:10 -0700 Subject: [PATCH] osd/Watch: handle con without sessions Signed-off-by: Sage Weil Reviewed-by: Greg Farnum --- src/osd/Watch.cc | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/osd/Watch.cc b/src/osd/Watch.cc index 7b324957ef005..7137cd81de5b7 100644 --- a/src/osd/Watch.cc +++ b/src/osd/Watch.cc @@ -323,12 +323,14 @@ void Watch::connect(ConnectionRef con) dout(10) << "connecting" << dendl; conn = con; OSD::Session* sessionref(static_cast(con->get_priv())); - sessionref->wstate.addWatch(self.lock()); - sessionref->put(); - for (map::iterator i = in_progress_notifies.begin(); - i != in_progress_notifies.end(); - ++i) { - send_notify(i->second); + if (sessionref) { + sessionref->wstate.addWatch(self.lock()); + sessionref->put(); + for (map::iterator i = in_progress_notifies.begin(); + i != in_progress_notifies.end(); + ++i) { + send_notify(i->second); + } } unregister_cb(); } @@ -361,8 +363,10 @@ void Watch::discard_state() discarded = true; if (conn) { OSD::Session* sessionref(static_cast(conn->get_priv())); - sessionref->wstate.removeWatch(self.lock()); - sessionref->put(); + if (sessionref) { + sessionref->wstate.removeWatch(self.lock()); + sessionref->put(); + } conn = ConnectionRef(); } obc = ObjectContextRef(); -- 2.39.5