diff options
author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-02-17 10:14:30 +0000 |
---|---|---|
committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-02-17 10:14:30 +0000 |
commit | cef121fa5f01576bfc801a84bfac055fd74b7859 (patch) | |
tree | 750fff244570bfe88a34f164478a9ad04eaa551f /lasso/id-wsf-2.0 | |
parent | d642712875f09edec3acfad4d17024a130ea6a06 (diff) | |
download | lasso-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.c | 12 |
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) \ |