summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lasso/id-wsf-2.0/discovery.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/lasso/id-wsf-2.0/discovery.c b/lasso/id-wsf-2.0/discovery.c
index e83680b8..02e86221 100644
--- a/lasso/id-wsf-2.0/discovery.c
+++ b/lasso/id-wsf-2.0/discovery.c
@@ -312,14 +312,19 @@ lasso_idwsf2_discovery_register_metadata(LassoIdWsf2Discovery *discovery)
LassoWsf2Profile *profile = LASSO_WSF2_PROFILE(discovery);
LassoIdWsf2DiscoSvcMDAssociationAdd *request;
LassoIdWsf2DiscoSvcMDAssociationAddResponse *response;
- LassoIdentity *identity = profile->identity;
+ LassoIdentity *identity;
LassoSoapEnvelope *envelope;
GList *i;
int res = 0;
g_return_val_if_fail(LASSO_IS_IDWSF2_DISCOVERY(discovery),
LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
- g_return_val_if_fail(LASSO_IS_IDENTITY(identity), LASSO_PROFILE_ERROR_IDENTITY_NOT_FOUND);
+
+ /* verify if identity already exists else create it */
+ if (profile->identity == NULL) {
+ profile->identity = lasso_identity_new();
+ }
+ identity = profile->identity;
if (! LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD(profile->request)) {
res = LASSO_PROFILE_ERROR_INVALID_SOAP_MSG;