summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lasso/id-wsf-2.0/session.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/lasso/id-wsf-2.0/session.c b/lasso/id-wsf-2.0/session.c
index 75d68212..5848607c 100644
--- a/lasso/id-wsf-2.0/session.c
+++ b/lasso/id-wsf-2.0/session.c
@@ -72,17 +72,27 @@ lasso_session_add_endpoint_reference(LassoSession *session, LassoWsAddrEndpointR
return 0;
}
+/**
+ * lasso_session_get_endpoint_reference:
+ * @session: a #LassoSession object
+ * @service_type: a string giving the service type.
+ *
+ * Return an endpoint reference for the given service type.
+ *
+ * Return value: a caller owned #LassoWsAddrEndpointReference object for the given service type if
+ * one is found, NULL otherwise.
+ */
LassoWsAddrEndpointReference*
lasso_session_get_endpoint_reference(LassoSession *session, const gchar *service_type)
{
LassoWsAddrEndpointReference* epr;
- g_return_val_if_fail(LASSO_IS_SESSION(session), NULL);
- g_return_val_if_fail(service_type != NULL, NULL);
+ if (! LASSO_IS_SESSION(session) || service_type == NULL)
+ return NULL;
epr = g_hash_table_lookup(session->private_data->eprs, service_type);
if (LASSO_IS_WSA_ENDPOINT_REFERENCE(epr)) {
- return LASSO_WSA_ENDPOINT_REFERENCE(epr);
+ return (LassoWsAddrEndpointReference*)g_object_ref(epr);
} else {
return NULL;
}
@@ -123,7 +133,7 @@ lasso_session_get_assertion_identity_token(LassoSession *session, const gchar *s
if (security_context->Token != NULL) {
sec_token = security_context->Token->data;
if (LASSO_IS_SAML2_ASSERTION(sec_token->any)) {
- lasso_assign_new_gobject(assertion, sec_token->any);
+ lasso_assign_gobject(assertion, sec_token->any);
break;
}
}