[ 3586680 ] improve error reporting in cmciConnect2
diff --git a/NEWS b/NEWS
index b47e19e..d586380 100644
--- a/NEWS
+++ b/NEWS
@@ -13,6 +13,7 @@
- 3547832: memory leak in backend/cimxml/grammer.c
- 3555103: wrong declaration of release attribute in _CIMCArgsFT
- 3566968: sfcc enumInstances fails to parse the xml
+- 3586680: improve error reporting in cmciConnect2
Changes in 2.2.3
================
diff --git a/contributions.txt b/contributions.txt
index 3629fae..c08b7e1 100644
--- a/contributions.txt
+++ b/contributions.txt
@@ -39,6 +39,7 @@
03/23/2011 [ 2990315 ] cmciRelease not called in case of error
04/25/2011 [ 2967265 ] code cleanup in sfcclient
05/29/2012 [ 3528819 ] Crash in getInstance when instance has NULL properties
+12/04/2012 [ 3586680 ] improve error reporting in cmciConnect2
Suresh Sundriyal, VMWare
------------------------
diff --git a/frontend/sfcc/sfcclient.c b/frontend/sfcc/sfcclient.c
index 2eed047..adbe355 100644
--- a/frontend/sfcc/sfcclient.c
+++ b/frontend/sfcc/sfcclient.c
@@ -76,10 +76,11 @@
CMPIStatus *rc)
{
CMCIClient *cc = NULL;
- char *msg;
+ char *msg = NULL;
int retc = 0;
char *client;
+ if (rc) rc->rc = CMPI_RC_OK;
pthread_mutex_lock(&ConnectionControl.ccMux);
if (ConnectionControl.ccCount == 0) {
client = getenv("SFCC_CLIENT");
@@ -94,8 +95,15 @@
}
if (retc || ConnectionControl.ccEnv == NULL) {
if(rc) {
- rc->rc=CMPI_RC_ERR_FAILED;
- rc->msg=NULL;
+ rc->rc = CMPI_RC_ERR_FAILED;
+ if (msg) {
+ fprintf(stderr, "sfcc: NewCIMCEnv failed: %s\n", msg);
+ free(msg);
+ }
+ else {
+ fprintf(stderr, "sfcc: NewCIMCEnv failed without message\n");
+ }
+ rc->msg = NULL; /* Can't create CMPIString without ConnectionControl.ccEnv ! */
}
cc=NULL;
} else {
@@ -113,8 +121,10 @@
/* cleanup ccEnv after pthread_mutex_unlock */
cmciRelease(NULL);
if (rc) {
- rc->rc = CMPI_RC_ERR_FAILED;
- rc->msg = NULL;
+ if (rc->rc == CMPI_RC_OK)
+ rc->rc = CMPI_RC_ERR_FAILED;
+ if (rc->msg == NULL && ConnectionControl.ccEnv != NULL)
+ rc->msg = native_new_CMPIString("Connection failed", NULL);
}
}