summaryrefslogtreecommitdiffstats
path: root/lasso/id-wsf-2.0
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-02-17 10:14:30 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-02-17 10:14:30 +0000
commitcef121fa5f01576bfc801a84bfac055fd74b7859 (patch)
tree750fff244570bfe88a34f164478a9ad04eaa551f /lasso/id-wsf-2.0
parentd642712875f09edec3acfad4d17024a130ea6a06 (diff)
downloadlasso-cef121fa5f01576bfc801a84bfac055fd74b7859.tar.gz
lasso-cef121fa5f01576bfc801a84bfac055fd74b7859.tar.xz
lasso-cef121fa5f01576bfc801a84bfac055fd74b7859.zip
ID-WSF 2.0: in lasso_idwsf2_discovery_status2rc, check second level status code too
Diffstat (limited to 'lasso/id-wsf-2.0')
-rw-r--r--lasso/id-wsf-2.0/discovery.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/lasso/id-wsf-2.0/discovery.c b/lasso/id-wsf-2.0/discovery.c
index 087e57f0..765e387e 100644
--- a/lasso/id-wsf-2.0/discovery.c
+++ b/lasso/id-wsf-2.0/discovery.c
@@ -219,16 +219,24 @@ lasso_idwsf2_discovery_status2rc(LassoIdWsf2UtilStatus *status)
{ LASSO_IDWSF2_DISCOVERY_STATUS_CODE_NO_RESULTS, LASSO_IDWSF2_DISCOVERY_ERROR_NO_RESULTS },
{ LASSO_IDWSF2_DISCOVERY_STATUS_CODE_NOT_FOUND, LASSO_IDWSF2_DISCOVERY_ERROR_NOT_FOUND }
};
+ int rc = LASSO_WSF_PROFILE_ERROR_UNKNOWN_STATUS_CODE;
if (! LASSO_IS_IDWSF2_UTIL_STATUS(status) || ! status->code)
return LASSO_PROFILE_ERROR_MISSING_STATUS_CODE;
for (i = 0; i < G_N_ELEMENTS(code2rc); ++i) {
if (g_strcmp0(status->code, code2rc[i].code) == 0) {
- return code2rc[i].rc;
+ rc = code2rc[i].rc;
}
}
- return LASSO_WSF_PROFILE_ERROR_UNKNOWN_STATUS_CODE;
+ /* check second level if necessary */
+ if (status->Status && rc == LASSO_IDWSF2_DISCOVERY_ERROR_FAILED) {
+ int rc2 = lasso_idwsf2_discovery_status2rc(status->Status->data);
+ if (rc2 != LASSO_WSF_PROFILE_ERROR_UNKNOWN_STATUS_CODE &&
+ rc2 != LASSO_PROFILE_ERROR_MISSING_STATUS_CODE)
+ rc = rc2;
+ }
+ return rc;
}
#define declare_init_request(name, request_element_type, constructor) \