Pass all configured pool names to attribute provider enumerator

This commit is contained in:
Martin Willi
2012-08-30 16:43:43 +02:00
parent feb8550401
commit d55fe264d1
9 changed files with 42 additions and 26 deletions
@@ -339,14 +339,14 @@ METHOD(attribute_provider_t, release_address, bool,
}
METHOD(attribute_provider_t, create_attribute_enumerator, enumerator_t*,
private_sql_attribute_t *this, char *names, identification_t *id,
private_sql_attribute_t *this, linked_list_t *pools, identification_t *id,
linked_list_t *vips)
{
enumerator_t *attr_enumerator = NULL;
if (vips->get_count(vips))
{
enumerator_t *names_enumerator;
enumerator_t *pool_enumerator;
u_int count;
char *name;
@@ -357,8 +357,8 @@ METHOD(attribute_provider_t, create_attribute_enumerator, enumerator_t*,
{
u_int identity = get_identity(this, id);
names_enumerator = enumerator_create_token(names, ",", " ");
while (names_enumerator->enumerate(names_enumerator, &name))
pool_enumerator = pools->create_enumerator(pools);
while (pool_enumerator->enumerate(pool_enumerator, &name))
{
u_int attr_pool = get_attr_pool(this, name);
if (!attr_pool)
@@ -385,14 +385,14 @@ METHOD(attribute_provider_t, create_attribute_enumerator, enumerator_t*,
DESTROY_IF(attr_enumerator);
attr_enumerator = NULL;
}
names_enumerator->destroy(names_enumerator);
pool_enumerator->destroy(pool_enumerator);
}
/* in a second step check for attributes that match name */
if (!attr_enumerator)
{
names_enumerator = enumerator_create_token(names, ",", " ");
while (names_enumerator->enumerate(names_enumerator, &name))
pool_enumerator = pools->create_enumerator(pools);
while (pool_enumerator->enumerate(pool_enumerator, &name))
{
u_int attr_pool = get_attr_pool(this, name);
if (!attr_pool)
@@ -419,7 +419,7 @@ METHOD(attribute_provider_t, create_attribute_enumerator, enumerator_t*,
DESTROY_IF(attr_enumerator);
attr_enumerator = NULL;
}
names_enumerator->destroy(names_enumerator);
pool_enumerator->destroy(pool_enumerator);
}
this->db->execute(this->db, NULL, "END TRANSACTION");