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; |