415 |
415 |
416 return REQ_PROCEED; |
416 return REQ_PROCEED; |
417 } |
417 } |
418 |
418 |
419 void dav_resource_response(PropfindRequest *davrq, sstr_t path, sstr_t uri) { |
419 void dav_resource_response(PropfindRequest *davrq, sstr_t path, sstr_t uri) { |
420 printf("dav_resource_response %s %s\n", sstrdub(path).ptr, sstrdub(uri).ptr); |
420 printf("dav_resource_response %s %s\n", sstrdup(path).ptr, sstrdup(uri).ptr); |
421 |
421 |
422 sbuf_puts(davrq->out, "<D:response>\n"); |
422 sbuf_puts(davrq->out, "<D:response>\n"); |
423 sbuf_puts(davrq->out, "<D:href>"); |
423 sbuf_puts(davrq->out, "<D:href>"); |
424 sbuf_append(davrq->out, uri); |
424 sbuf_append(davrq->out, uri); |
425 sbuf_puts(davrq->out, "</D:href>\n"); |
425 sbuf_puts(davrq->out, "</D:href>\n"); |
673 sbuf_puts(out, "\n</D:prop>\n<D:status>HTTP/1.1 200 OK</D:status>\n"); |
673 sbuf_puts(out, "\n</D:prop>\n<D:status>HTTP/1.1 200 OK</D:status>\n"); |
674 sbuf_puts(out, "</D:propstat>\n"); |
674 sbuf_puts(out, "</D:propstat>\n"); |
675 } |
675 } |
676 |
676 |
677 UcxMapIterator iter = ucx_map_iterator(propstat->map); |
677 UcxMapIterator iter = ucx_map_iterator(propstat->map); |
678 UCX_MAP_FOREACH(UcxDlist*, proplist, propstat->map, iter) { |
678 UcxDlist *proplist; |
|
679 UCX_MAP_FOREACH(proplist, iter) { |
679 if(proplist) { |
680 if(proplist) { |
680 sbuf_puts(out, "<D:propstat>\n<D:prop>\n"); |
681 sbuf_puts(out, "<D:propstat>\n<D:prop>\n"); |
681 |
682 |
682 DAV_FOREACH(prop, proplist) { |
683 DAV_FOREACH(prop, proplist) { |
683 xmlelm_write((XmlElement*)prop->data, out, wv); |
684 xmlelm_write((XmlElement*)prop->data, out, wv); |