From: Sage Weil Date: Tue, 9 Sep 2014 23:11:10 +0000 (-0700) Subject: osd/Watch: handle con without sessions X-Git-Tag: v0.86~31^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=fb5a244915015452aefcb5797a2b814fa5a1acfa;p=ceph.git osd/Watch: handle con without sessions Signed-off-by: Sage Weil Reviewed-by: Greg Farnum --- diff --git a/src/osd/Watch.cc b/src/osd/Watch.cc index 7b324957ef00..7137cd81de5b 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();