cluster: STABLE3 - rgmanager: Fix leaked context on queue fail

Lon Hohberger lon@fedoraproject.org
Mon Jun 22 13:34:00 GMT 2009


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=6a9c8dbb44439d57a9da92990619a1d47c081136
Commit:        6a9c8dbb44439d57a9da92990619a1d47c081136
Parent:        ecabf4059c7a731ca3cd154647c104660e3b649f
Author:        Lon Hohberger <lhh@redhat.com>
AuthorDate:    Fri Jun 19 17:02:53 2009 -0400
Committer:     Lon Hohberger <lhh@redhat.com>
CommitterDate: Mon Jun 22 09:32:03 2009 -0400

rgmanager: Fix leaked context on queue fail

Signed-off-by: Lon Hohberger <lhh@redhat.com>
---
 rgmanager/src/daemons/main.c |   19 ++++++++++++++-----
 1 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/rgmanager/src/daemons/main.c b/rgmanager/src/daemons/main.c
index 4082743..8f9fc2f 100644
--- a/rgmanager/src/daemons/main.c
+++ b/rgmanager/src/daemons/main.c
@@ -458,11 +458,20 @@ dispatch_msg(msgctx_t *ctx, int nodeid, int need_close)
 
 		/* Distributed processing and/or request is from master node
 		   -- Queue request */
-		rt_enqueue_request(msg_sm->sm_data.d_svcName,
-		  		   msg_sm->sm_data.d_action,
-		  		   ctx, 0, msg_sm->sm_data.d_svcOwner,
-		  		   msg_sm->sm_hdr.gh_arg1,
-		  		   msg_sm->sm_hdr.gh_arg2);
+		if (rt_enqueue_request(msg_sm->sm_data.d_svcName,
+		      		       msg_sm->sm_data.d_action,
+		      		       ctx, 0, msg_sm->sm_data.d_svcOwner,
+		      		       msg_sm->sm_hdr.gh_arg1,
+		      		       msg_sm->sm_hdr.gh_arg2) != 0) {
+
+			/* Clean up this context if we fail to 
+			 * queue the request. */
+			send_ret(ctx, msg_sm->sm_data.d_svcName,
+				 RG_EAGAIN, msg_sm->sm_data.d_action, 0);
+			need_close = 1;
+			ret = 0;
+			goto out;
+		}
 		return 0;
 
 	case RG_EVENT:



More information about the Cluster-cvs mailing list