]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
client: ensure we don't leak MClientReply
authorSage Weil <sage@inktank.com>
Fri, 9 Nov 2012 18:25:48 +0000 (10:25 -0800)
committerSage Weil <sage@inktank.com>
Sat, 10 Nov 2012 00:03:20 +0000 (16:03 -0800)
We are careful to clear this reference when processing it.

Add an assert here.  There's no way we can get 2 quick replies because
of the kick-back below.

Signed-off-by: Sage Weil <sage@inktank.com>
src/client/Client.cc
src/client/MetaRequest.cc

index ffc67ed19314a563e912008b7e21af50608ad410..0e1354fb53046b5b49afdcd0ecdda88f22d45825 100644 (file)
@@ -1122,7 +1122,7 @@ int Client::make_request(MetaRequest *request,
 
   // got it!
   MClientReply *reply = request->reply;
-  request->reply = 0;
+  request->reply = NULL;
   if (ptarget)
     *ptarget = request->target;
 
@@ -1478,6 +1478,7 @@ void Client::handle_client_reply(MClientReply *reply)
   }
   
   int mds = reply->get_source().num();
+  assert(request->reply == NULL);
   request->reply = reply;
   insert_trace(request, mds);
 
index eca9caead13ec65691ac7da2abf02404d73a3f96..b553a0dec5eba492b36106b0092b6175b35eeee4 100644 (file)
@@ -1,6 +1,8 @@
 
+#include "include/types.h"
 #include "MetaRequest.h"
 #include "Dentry.h"
+#include "messages/MClientReply.h"
 
 MetaRequest::~MetaRequest()
 {
@@ -8,4 +10,6 @@ MetaRequest::~MetaRequest()
     dentry->put();
   if (old_dentry)
     old_dentry->put();
+  if (reply)
+    reply->put();
 }