|
From: Narasimha S. <nsh...@us...> - 2012-03-26 18:32:27
|
Update of /cvsroot/sblim/sfcb
In directory vz-cvs-3.sog:/tmp/cvs-serv30618
Modified Files:
providerDrv.c
Log Message:
[ 3498496 ] sfcb hangs and fails to respond to CIM requests
Index: providerDrv.c
===================================================================
RCS file: /cvsroot/sblim/sfcb/providerDrv.c,v
retrieving revision 1.110
retrieving revision 1.111
diff -u -d -r1.110 -r1.111
--- providerDrv.c 12 Mar 2012 22:30:52 -0000 1.110
+++ providerDrv.c 26 Mar 2012 18:32:25 -0000 1.111
@@ -2416,7 +2416,7 @@
IndicationReq *req = (IndicationReq*)hdr;
BinResponseHdr *resp=NULL;
CMPIStatus rci = { CMPI_RC_OK, NULL };
- NativeSelectExp *se=NULL,**sef=&activFilters;
+ NativeSelectExp *se=NULL, *prev = NULL;
CMPIObjectPath *path = relocateSerializedObjectPath(req->objectPath.data);
CMPIContext *ctx = native_new_CMPIContext(MEM_TRACKED,info);
CMPIResult *result = native_new_CMPIResult(0,1,NULL);
@@ -2432,9 +2432,9 @@
_SFCB_TRACE(1, ("--- pid: %d activFilters %p",currentProc,activFilters));
if (info->indicationMI==NULL || activFilters==NULL) _SFCB_RETURN(resp);
- for (se = activFilters; se; se = se->next) {
+ for (se = activFilters; se; prev = se, se = se->next) {
+ //_SFCB_TRACE(1, ("---- se->filterid:%p, req=>filterid:%p, se:%p, activFilters:%p, prev:%p", se->filterId, req->filterId, se, activFilters, prev));
if (se->filterId == req->filterId) {
- *sef=se->next;
if (activFilters==NULL) {
_SFCB_TRACE(1, ("--- Calling disableIndications %s",info->providerName));
info->indicationEnabled=0;
@@ -2458,6 +2458,16 @@
if (rci.rc==CMPI_RC_OK) {
decreaseInUseSem(info->provIds.procId);
resp->rc=1;
+ /*79580-3498496*/
+ if (prev == NULL) {
+ activFilters = activFilters->next;
+ }
+ else {
+ prev->next = se->next;
+ }
+ _SFCB_TRACE(1, ("---- pid:%d, freeing: %p", currentProc, se));
+ CMRelease((CMPISelectExp *)se);
+
_SFCB_RETURN(resp);
}
@@ -2465,8 +2475,6 @@
resp = errorResp(&rci);
_SFCB_RETURN(resp);
}
- sef=&se->next;
- CMRelease((CMPISelectExp*)se);
}
_SFCB_RETURN(resp);
|