From 344778115932fdcb63c7105877df456fda5d3bac Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zden=C4=9Bk=20Salvet?= Date: Thu, 18 May 2006 09:01:32 +0000 Subject: [PATCH] Redo RegisterSubjobs error handling correctly (new fix for bug #14453). --- org.glite.lb.client/src/producer.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/org.glite.lb.client/src/producer.c b/org.glite.lb.client/src/producer.c index 35aaa97..0282c0a 100644 --- a/org.glite.lb.client/src/producer.c +++ b/org.glite.lb.client/src/producer.c @@ -895,6 +895,8 @@ int edg_wll_RegisterSubjobs( edg_wlc_JobId const *psubjob; edg_wlc_JobId oldctxjob; char * oldctxseq; + int errcode = 0; + char * errdesc = NULL; if (edg_wll_GetLoggingJob(ctx, &oldctxjob)) return edg_wll_Error(ctx, NULL, NULL); oldctxseq = edg_wll_GetSequenceCode(ctx); @@ -905,14 +907,19 @@ int edg_wll_RegisterSubjobs( while (*pjdl != NULL) { if (edg_wll_RegisterSubjob(ctx, *psubjob, EDG_WLL_REGJOB_SIMPLE, *pjdl, ns, parent, 0, NULL, NULL) != 0) { + errcode = edg_wll_Error(ctx, NULL, &errdesc); goto edg_wll_registersubjobs_end; } pjdl++; psubjob++; } +edg_wll_registersubjobs_end: edg_wll_SetLoggingJob(ctx, oldctxjob, oldctxseq, EDG_WLL_SEQ_NORMAL); -edg_wll_registersubjobs_end: + if (errcode) { + edg_wll_SetError(ctx, errcode, errdesc); + free(errdesc); + } return edg_wll_Error(ctx, NULL, NULL); } @@ -927,6 +934,8 @@ int edg_wll_RegisterSubjobsProxy( edg_wlc_JobId const *psubjob; edg_wlc_JobId oldctxjob; char * oldctxseq; + int errcode = 0; + char * errdesc = NULL; if (edg_wll_GetLoggingJob(ctx, &oldctxjob)) return edg_wll_Error(ctx, NULL, NULL); oldctxseq = edg_wll_GetSequenceCode(ctx); @@ -937,14 +946,19 @@ int edg_wll_RegisterSubjobsProxy( while (*pjdl != NULL) { if (edg_wll_RegisterSubjobProxy(ctx, *psubjob, EDG_WLL_REGJOB_SIMPLE, *pjdl, ns, parent, 0, NULL, NULL) != 0) { + errcode = edg_wll_Error(ctx, NULL, &errdesc); goto edg_wll_registersubjobsproxy_end; } pjdl++; psubjob++; } +edg_wll_registersubjobsproxy_end: edg_wll_SetLoggingJobProxy(ctx, oldctxjob, oldctxseq, NULL, EDG_WLL_SEQ_NORMAL); -edg_wll_registersubjobsproxy_end: + if (errcode) { + edg_wll_SetError(ctx, errcode, errdesc); + free(errdesc); + } return edg_wll_Error(ctx, NULL, NULL); } -- 1.8.2.3