implemented rereadcrls rereadcacerts
[strongswan.git] / src / libstrongswan / utils / linked_list.c
index 6444343..ede651f 100644 (file)
@@ -152,7 +152,15 @@ struct private_iterator_t {
 };
 
 /**
- * Implementation of iterator_t.has_next.
+ * Implementation of iterator_t.get_count.
+ */
+static int get_list_count(private_iterator_t *this)
+{
+       return this->list->count;
+}
+
+/**
+ * Implementation of iterator_t.iterate.
  */
 static bool iterate(private_iterator_t *this, void** value)
 {
@@ -260,10 +268,6 @@ static status_t remove(private_iterator_t *this)
        {
                new_current = this->current->previous;
        }
-       else if (this->current->next != NULL)
-       {
-               new_current = this->current->next;
-       }
        else
        {
                new_current = NULL;
@@ -661,10 +665,11 @@ static status_t get_last(private_linked_list_t *this, void **item)
 /**
  * Implementation of linked_list_t.create_iterator.
  */
-static iterator_t *create_iterator (private_linked_list_t *linked_list,bool forward)
+static iterator_t *create_iterator (private_linked_list_t *linked_list, bool forward)
 {
        private_iterator_t *this = malloc_thing(private_iterator_t);
 
+       this->public.get_count = (bool (*) (iterator_t *this)) get_list_count;
        this->public.iterate = (bool (*) (iterator_t *this, void **value)) iterate;
        this->public.has_next = (bool (*) (iterator_t *this)) iterator_has_next;
        this->public.current = (status_t (*) (iterator_t *this, void **value)) iterator_current;