X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fcontext_loop.c;h=dffd6eeb8ac7f378c244008b3a9352cbfa680b24;hb=42e5566f6512bc39f9377d183f26dddfc36d10ea;hp=743c4f3839e683278f04493090e14445b17fd528;hpb=dd9dcfceb5d639bd9b217dccf9c5a0d7ed94b1ba;p=citadel.git diff --git a/webcit/context_loop.c b/webcit/context_loop.c index 743c4f383..dffd6eeb8 100644 --- a/webcit/context_loop.c +++ b/webcit/context_loop.c @@ -45,6 +45,19 @@ struct wcsession *SessionList = NULL; pthread_key_t MyConKey; /* TSD key for MySession() */ + +void free_attachments(struct wcsession *sess) { + struct wc_attachment *att; + + while (sess->first_attachment != NULL) { + att = sess->first_attachment; + sess->first_attachment = sess->first_attachment->next; + free(att->data); + free(att); + } +} + + void do_housekeeping(void) { struct wcsession *sptr, *ss, *session_to_kill; @@ -88,6 +101,7 @@ BREAKOUT: pthread_mutex_unlock(&SessionListMutex); if (session_to_kill->preferences != NULL) { free(session_to_kill->preferences); } + free_attachments(session_to_kill); pthread_mutex_unlock(&session_to_kill->SessionMutex); free(session_to_kill); }