AXIS2_EXTERN void AXIS2_CALL saml_request_free()

in src/omxmlsec/saml/request.c [81:155]


AXIS2_EXTERN void AXIS2_CALL saml_request_free(saml_request_t *request, const axutil_env_t *env)
{
	int size = 0, i = 0;
	saml_artifact_t *artifact = NULL;
	axutil_qname_t *respond = NULL;

	if(request->request_id)
	{
		AXIS2_FREE(env->allocator, request->request_id);
	}
	if(request->issue_instant)
	{
		axutil_date_time_free(request->issue_instant, env);
	}
	if(request->major_version)
	{
		AXIS2_FREE(env->allocator, request->major_version);
	}
	if(request->minor_version)
	{
		AXIS2_FREE(env->allocator, request->minor_version);
	}
	if(request->query)
	{
		saml_query_free(request->query, env);
	}
	if(request->sig_ctx)
	{
		oxs_sign_ctx_free(request->sig_ctx, env);
	}
	if(request->saml_artifacts)
	{
		size = axutil_array_list_size(request->saml_artifacts, env);
		for(i = 0; i < size ; i++)
		{
			artifact = (saml_artifact_t*)axutil_array_list_get(request->saml_artifacts, env , i);
			if(artifact)
				saml_artifact_free(artifact, env);
		}

		axutil_array_list_free(request->saml_artifacts, env);
	}
	if(request->saml_asserion_id_ref)
	{
		axis2_char_t *id_ref = NULL;

		size = axutil_array_list_size(request->saml_asserion_id_ref, env);
		for(i = 0; i < size ; i++)
		{
			id_ref = (axis2_char_t*)axutil_array_list_get(request->saml_asserion_id_ref, env , i);
			if(id_ref)
				AXIS2_FREE(env->allocator, id_ref);
		}

		axutil_array_list_free(request->saml_asserion_id_ref, env);
	}
	if(request->saml_responds)
	{

		size = axutil_array_list_size(request->saml_responds, env);
		for(i = 0; i < size ; i++)
		{
			respond = (axutil_qname_t*)axutil_array_list_get(request->saml_responds, env , i);
			if(respond)
				axutil_qname_free(respond, env);
		}

		axutil_array_list_free(request->saml_responds, env);
	}
	request->original_xml = NULL;
	request->signature = NULL;
	AXIS2_FREE(env->allocator, request);
	request = NULL;

}