libidav/webdav.c

changeset 790
7110b37f2a6b
parent 788
9b9420041d8e
child 805
bff983370565
--- a/libidav/webdav.c	Thu Sep 14 18:11:50 2023 +0200
+++ b/libidav/webdav.c	Sun Sep 17 11:21:31 2023 +0200
@@ -51,6 +51,7 @@
         return NULL;
     }
     context->sessions = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_intptr, CX_STORE_POINTERS);
+    context->sessions->destructor_data = dav_session_destructor;
     context->http_proxy = calloc(1, sizeof(DavProxy));
     if(!context->http_proxy) {
         dav_context_destroy(context);
@@ -100,11 +101,9 @@
 
 void dav_context_destroy(DavContext *ctx) {
     // destroy all sessions assoziated with this context
-    CxIterator i = cxListIterator(ctx->sessions);
-    cx_foreach(DavSession*, sn, i) {
-        dav_session_destroy(sn);
-    }
+    // ctx->sessions destructor must be dav_session_destructor
     cxListDestroy(ctx->sessions);
+    
     if(ctx->http_proxy) {
         free(ctx->http_proxy);
     }
@@ -113,7 +112,7 @@
     }
     
     if(ctx->namespaces) {
-        i = cxMapIteratorValues(ctx->namespaces);
+        CxIterator i = cxMapIteratorValues(ctx->namespaces);
         cx_foreach(DavNamespace*, ns, i) {
             if(!ns) continue;
             if(ns->prefix) {
@@ -130,7 +129,7 @@
         // TODO: implement
     }
     if(ctx->keys) {
-        i = cxMapIteratorValues(ctx->keys);
+        CxIterator i = cxMapIteratorValues(ctx->keys);
         cx_foreach(DavKey*, key, i) {
             if(!key) continue;
             if(key->name) {

mercurial