src/server/webdav/multistatus.c

branch
webdav
changeset 237
ee1680ef1ef2
parent 233
c5985d2fc19a
child 238
e820d433f405
equal deleted inserted replaced
236:e81d3e517b57 237:ee1680ef1ef2
550 WebdavOperation *op = response->multistatus->response.op; 550 WebdavOperation *op = response->multistatus->response.op;
551 if(webdav_op_propfiond_close_resource(op, res)) { 551 if(webdav_op_propfiond_close_resource(op, res)) {
552 ret = REQ_ABORTED; 552 ret = REQ_ABORTED;
553 } 553 }
554 554
555 // add missing properties with status code 404
556 UcxAllocator *a = session_get_allocator(response->multistatus->sn);
557 WebdavPList *pl = response->multistatus->response.op->reqprops;
558 while(pl) {
559 sstr_t key = sstrcat_a(
560 a,
561 3,
562 sstr((char*)pl->property->namespace->href),
563 S("\0"),
564 sstr((char*)pl->property->name));
565 if(!ucx_map_sstr_get(response->properties, key)) {
566 // property was not added to this response
567 if(msresponse_addproperror(response, pl->property, 404)) {
568 ret = REQ_ABORTED;
569 break;
570 }
571 }
572
573 pl = pl->next;
574 }
575
555 // we don't need the properties anymore 576 // we don't need the properties anymore
556 ucx_map_free(response->properties); 577 ucx_map_free(response->properties);
557 578
558 response->resource.isclosed = TRUE; 579 response->resource.isclosed = TRUE;
559 response->closing = FALSE; 580 response->closing = FALSE;

mercurial