From f14aa907e8dd9c2205cbb83091701aa161ddb6ff Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Thu, 5 Oct 2023 23:20:27 -0400 Subject: [PATCH] upload DELETE method --- webcit-ng/server/messages.c | 3 +-- webcit-ng/server/upload.c | 22 +++++++++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/webcit-ng/server/messages.c b/webcit-ng/server/messages.c index 81896c7b5..415241368 100644 --- a/webcit-ng/server/messages.c +++ b/webcit-ng/server/messages.c @@ -40,8 +40,7 @@ long locate_message_by_uid(struct ctdlsession *c, char *uid) { // DAV delete an object in a room. void dav_delete_message(struct http_transaction *h, struct ctdlsession *c, long msgnum) { ctdl_delete_msgs(c, &msgnum, 1); - h->response_code = 204; - h->response_string = strdup("no content"); + do_204(h); } diff --git a/webcit-ng/server/upload.c b/webcit-ng/server/upload.c index 711bbf352..17d96a9a3 100644 --- a/webcit-ng/server/upload.c +++ b/webcit-ng/server/upload.c @@ -106,6 +106,26 @@ void ctdl_p_base(struct http_transaction *h, struct ctdlsession *c) { } +// DAV delete an uploaded item +void dav_delete_upload(struct http_transaction *h, struct ctdlsession *c, struct uploaded_file this_one) { + int i; + struct uploaded_file *u; + + pthread_mutex_lock(&upload_list_mutex); + for (i=0; iid, this_one.id)) { + fclose(u->fp); // this deletes the file because it has 0 links + array_delete_element_at(upload_list, i); + i = array_len(upload_list) + 1; // Go out of scope; we're done here + } + } + pthread_mutex_unlock(&upload_list_mutex); + + do_204(h); +} + + // Handle operations on a specific upload void specific_upload(struct http_transaction *h, struct ctdlsession *c, char *name) { int i; @@ -137,7 +157,7 @@ void specific_upload(struct http_transaction *h, struct ctdlsession *c, char *na do_405(h); } else if (!strcasecmp(h->method, "DELETE")) { // delete the item - do_405(h); + dav_delete_upload(h, c, this_one); } else { // unsupported method do_405(h); -- 2.30.2