Lines Matching refs:r
284 #define http_status_get(r) ((r)->http_status) argument
285 #define http_status_set_fin(r, code) ((r)->resp_body_finished = 1,\ argument
286 (r)->handler_module = NULL, \
287 (r)->http_status = (code))
288 #define http_status_set(r, code) ((r)->http_status = (code)) argument
289 #define http_status_unset(r) ((r)->http_status = 0) argument
290 #define http_status_is_set(r) (0 != (r)->http_status) argument
293 static int http_status_set_error (request_st * const r, int status) { in http_status_set_error() argument
294 return http_status_set_fin(r, status); in http_status_set_error()
493 static void mod_webdav_patch_config(request_st * const r, plugin_data * const p, plugin_config * co… in mod_webdav_patch_config() argument
496 if (config_check_cond(r, (uint32_t)p->cvlist[i].k_id)) in mod_webdav_patch_config()
620 if (r->http_method != HTTP_METHOD_OPTIONS) in URIHANDLER_FUNC()
624 mod_webdav_patch_config(r, (plugin_data *)p_d, &pconf); in URIHANDLER_FUNC()
630 http_header_response_set(r, HTTP_HEADER_OTHER, in URIHANDLER_FUNC()
635 http_header_response_set(r, HTTP_HEADER_OTHER, in URIHANDLER_FUNC()
642 http_header_response_set(r, HTTP_HEADER_OTHER, in URIHANDLER_FUNC()
647 http_header_response_append(r, HTTP_HEADER_ALLOW, in URIHANDLER_FUNC()
652 http_header_response_append(r, HTTP_HEADER_ALLOW, in URIHANDLER_FUNC()
664 http_header_response_append(r, HTTP_HEADER_ALLOW, in URIHANDLER_FUNC()
675 webdav_double_buffer (request_st * const r, buffer * const b) in webdav_double_buffer() argument
681 http_chunk_append_buffer(r, b); /*(might move/steal/reset buffer)*/ in webdav_double_buffer()
767 webdav_xml_log_response (request_st * const r) in webdav_xml_log_response() argument
769 chunkqueue * const cq = &r->write_queue; in webdav_xml_log_response()
770 log_error_st * const errh = r->conf.errh; in webdav_xml_log_response()
791 chunkqueue_chunk_file_viewadj(c, (off_t)len, r->conf.errh); in webdav_xml_log_response()
808 webdav_xml_doctype (buffer * const b, request_st * const r) in webdav_xml_doctype() argument
810 http_header_response_set(r, HTTP_HEADER_CONTENT_TYPE, in webdav_xml_doctype()
931 webdav_xml_response_status (request_st * const r, in webdav_xml_response_status() argument
943 http_chunk_append_buffer(r, b); /*(might move/steal/reset buffer)*/ in webdav_xml_response_status()
1016 webdav_xml_doc_multistatus (request_st * const r, in webdav_xml_doc_multistatus() argument
1019 http_status_set_fin(r, 207); /* Multi-status */ in webdav_xml_doc_multistatus()
1021 chunkqueue * const cq = &r->write_queue; in webdav_xml_doc_multistatus()
1023 webdav_xml_doctype(b, r); in webdav_xml_doc_multistatus()
1032 webdav_xml_log_response(r); in webdav_xml_doc_multistatus()
1038 webdav_xml_doc_multistatus_response (request_st * const r, in webdav_xml_doc_multistatus_response() argument
1042 http_status_set_fin(r, 207); /* Multi-status */ in webdav_xml_doc_multistatus_response()
1044 chunkqueue * const cq = &r->write_queue; in webdav_xml_doc_multistatus_response()
1046 webdav_xml_doctype(b, r); in webdav_xml_doc_multistatus_response()
1050 webdav_xml_href(b, &r->physical.rel_path); in webdav_xml_doc_multistatus_response()
1058 webdav_xml_log_response(r); in webdav_xml_doc_multistatus_response()
1065 webdav_xml_doc_lock_acquired (request_st * const r, in webdav_xml_doc_lock_acquired() argument
1075 http_header_response_set(r, HTTP_HEADER_OTHER, in webdav_xml_doc_lock_acquired()
1080 chunkqueue_append_buffer_open_sz(&r->write_queue, 1024); in webdav_xml_doc_lock_acquired()
1082 webdav_xml_doctype(b, r); in webdav_xml_doc_lock_acquired()
1091 chunkqueue_append_buffer_commit(&r->write_queue); in webdav_xml_doc_lock_acquired()
1094 webdav_xml_log_response(r); in webdav_xml_doc_lock_acquired()
1118 webdav_xml_doc_error_propfind_finite_depth (request_st * const r) in webdav_xml_doc_error_propfind_finite_depth() argument
1120 http_status_set(r, 403); /* Forbidden */ in webdav_xml_doc_error_propfind_finite_depth()
1121 r->resp_body_finished = 1; in webdav_xml_doc_error_propfind_finite_depth()
1124 chunkqueue_append_buffer_open_sz(&r->write_queue, 256); in webdav_xml_doc_error_propfind_finite_depth()
1125 webdav_xml_doctype(b, r); in webdav_xml_doc_error_propfind_finite_depth()
1128 chunkqueue_append_buffer_commit(&r->write_queue); in webdav_xml_doc_error_propfind_finite_depth()
1135 webdav_xml_doc_error_lock_token_matches_request_uri (request_st * const r) in webdav_xml_doc_error_lock_token_matches_request_uri() argument
1137 http_status_set(r, 409); /* Conflict */ in webdav_xml_doc_error_lock_token_matches_request_uri()
1138 r->resp_body_finished = 1; in webdav_xml_doc_error_lock_token_matches_request_uri()
1141 chunkqueue_append_buffer_open_sz(&r->write_queue, 256); in webdav_xml_doc_error_lock_token_matches_request_uri()
1142 webdav_xml_doctype(b, r); in webdav_xml_doc_error_lock_token_matches_request_uri()
1145 chunkqueue_append_buffer_commit(&r->write_queue); in webdav_xml_doc_error_lock_token_matches_request_uri()
1153 webdav_xml_doc_423_locked (request_st * const r, buffer * const hrefs, in webdav_xml_doc_423_locked() argument
1156 http_status_set(r, 423); /* Locked */ in webdav_xml_doc_423_locked()
1157 r->resp_body_finished = 1; in webdav_xml_doc_423_locked()
1159 chunkqueue * const cq = &r->write_queue; in webdav_xml_doc_423_locked()
1161 webdav_xml_doctype(b, r); in webdav_xml_doc_423_locked()
1185 webdav_xml_doc_error_lock_token_submitted (request_st * const r, in webdav_xml_doc_error_lock_token_submitted() argument
1188 webdav_xml_doc_423_locked(r, hrefs, in webdav_xml_doc_error_lock_token_submitted()
1197 webdav_xml_doc_error_no_conflicting_lock (request_st * const r, in webdav_xml_doc_error_no_conflicting_lock() argument
1200 webdav_xml_doc_423_locked(r, hrefs, in webdav_xml_doc_error_no_conflicting_lock()
2326 webdav_405_no_db (request_st * const r) in webdav_405_no_db() argument
2328 http_header_response_set(r, HTTP_HEADER_ALLOW, in webdav_405_no_db()
2331 http_status_set_error(r, 405); /* Method Not Allowed */ in webdav_405_no_db()
2340 webdav_reqbody_type_xml (request_st * const r) in webdav_reqbody_type_xml() argument
2343 http_header_request_get(r, HTTP_HEADER_CONTENT_TYPE, in webdav_reqbody_type_xml()
2356 webdav_if_match_or_unmodified_since (request_st * const r, struct stat *st) in webdav_if_match_or_unmodified_since() argument
2358 const buffer *im = (0 != r->conf.etag_flags) in webdav_if_match_or_unmodified_since()
2359 ? http_header_request_get(r, HTTP_HEADER_IF_MATCH, in webdav_if_match_or_unmodified_since()
2363 const buffer *inm = (0 != r->conf.etag_flags) in webdav_if_match_or_unmodified_since()
2364 ? http_header_request_get(r, HTTP_HEADER_IF_NONE_MATCH, in webdav_if_match_or_unmodified_since()
2369 http_header_request_get(r, HTTP_HEADER_IF_UNMODIFIED_SINCE, in webdav_if_match_or_unmodified_since()
2376 st = (0 == lstat(r->physical.path.ptr, &stp)) ? &stp : NULL; in webdav_if_match_or_unmodified_since()
2378 buffer * const etagb = r->tmp_buf; in webdav_if_match_or_unmodified_since()
2381 http_etag_create(etagb, st, r->conf.etag_flags); in webdav_if_match_or_unmodified_since()
2408 webdav_response_etag (request_st * const r, struct stat *st) in webdav_response_etag() argument
2411 if (0 != r->conf.etag_flags) { in webdav_response_etag()
2412 etagb = http_header_response_set_ptr(r, HTTP_HEADER_ETAG, in webdav_response_etag()
2414 http_etag_create(etagb, st, r->conf.etag_flags); in webdav_response_etag()
2416 stat_cache_update_entry(BUF_PTR_LEN(&r->physical.path), st, etagb); in webdav_response_etag()
2436 webdav_parse_Depth (const request_st * const r) in webdav_parse_Depth() argument
2442 http_header_request_get(r, HTTP_HEADER_OTHER, CONST_STR_LEN("Depth")); in webdav_parse_Depth()
2500 request_st * const r, in webdav_delete_dir() argument
2513 webdav_xml_response_status(r, &dst->rel_path, 403); in webdav_delete_dir()
2569 multi_status |= webdav_delete_dir(pconf, dst, r, flags); in webdav_delete_dir()
2575 webdav_xml_response_status(r, &dst->rel_path, status); in webdav_delete_dir()
2598 webdav_xml_response_status(r, &dst->rel_path, rmdir_status); in webdav_delete_dir()
3050 request_st * const r, in webdav_copymove_dir() argument
3106 webdav_xml_response_status(r, &src->rel_path, 412); in webdav_copymove_dir()
3129 webdav_xml_response_status(r, &src->rel_path, 412); in webdav_copymove_dir()
3136 webdav_xml_response_status(r, &src->rel_path, 409); in webdav_copymove_dir()
3163 webdav_xml_response_status(r, &src->rel_path, status); in webdav_copymove_dir()
3194 webdav_xml_response_status(r, &src->rel_path, status); in webdav_copymove_dir()
3219 webdav_xml_response_status(r, &src->rel_path, 403); in webdav_copymove_dir()
3274 status = webdav_copymove_dir(pconf, src, dst, r, flags); in webdav_copymove_dir()
3281 webdav_xml_response_status(r, &src->rel_path, status); in webdav_copymove_dir()
3309 status = webdav_delete_dir(pconf, src, r, flags); /* content */ in webdav_copymove_dir()
3311 webdav_xml_response_status(r, &src->rel_path, status); in webdav_copymove_dir()
3322 request_st * restrict r; member
3495 const array * const mtypes = pb->r->conf.mimetypes; in webdav_propfind_live_props()
3514 if (0 != pb->r->conf.etag_flags) { in webdav_propfind_live_props()
3515 buffer * const etagb = pb->r->tmp_buf; in webdav_propfind_live_props()
3516 http_etag_create(etagb, &pb->st, pb->r->conf.etag_flags); in webdav_propfind_live_props()
3690 webdav_double_buffer(pb->r, b); in webdav_propfind_resource_403()
3732 webdav_double_buffer(pb->r, b); in webdav_propfind_resource()
3769 (pb->r->conf.force_lowercase_filenames ? WEBDAV_FLAG_LC_NAMES : 0); in webdav_propfind_dir()
3836 webdav_parse_chunkqueue (request_st * const r, in webdav_parse_chunkqueue() argument
3845 chunkqueue * const cq = &r->reqbody_queue; in webdav_parse_chunkqueue()
3862 xmlstr = webdav_mmap_file_chunk(c, r->conf.errh); in webdav_parse_chunkqueue()
3869 if (0 == chunkqueue_peek_data(cq, &data, &dlen, r->conf.errh)) { in webdav_parse_chunkqueue()
3880 log_error(r->conf.errh, __FILE__, __LINE__, in webdav_parse_chunkqueue()
3889 log_error(r->conf.errh, __FILE__, __LINE__, in webdav_parse_chunkqueue()
3893 log_error(r->conf.errh, __FILE__, __LINE__, in webdav_parse_chunkqueue()
3914 log_error(r->conf.errh, __FILE__, __LINE__, in webdav_parse_chunkqueue()
3935 request_st *r; member
3987 webdav_double_buffer(cbdata->r, cbdata->b); in webdav_lock_token_submitted_cb()
3996 webdav_has_lock (request_st * const r, in webdav_has_lock() argument
4010 cbdata.r = r; in webdav_has_lock()
4020 array_get_element_klen(&r->env, CONST_STR_LEN("REMOTE_USER")); in webdav_has_lock()
4024 http_header_request_get(r, HTTP_HEADER_OTHER, CONST_STR_LEN("If")); in webdav_has_lock()
4070 if (0 == r->conf.etag_flags) continue; /*ignore entity-tag*/ in webdav_has_lock()
4072 if (0 != lstat(r->physical.path.ptr, &st)) { in webdav_has_lock()
4073 http_status_set_error(r, 412); /* Precondition Failed */ in webdav_has_lock()
4078 buffer * const etagb = r->tmp_buf; in webdav_has_lock()
4079 http_etag_create(etagb, &st, r->conf.etag_flags); in webdav_has_lock()
4084 http_status_set_error(r, 412); /* Precondition Failed */ in webdav_has_lock()
4095 http_status_set_error(r, 412); /* Precondition Failed */ in webdav_has_lock()
4110 http_status_set_error(r, 400); /* Bad Request */ in webdav_has_lock()
4137 if (0 != cbdata.b->used || !chunkqueue_is_empty(&r->write_queue)) in webdav_has_lock()
4142 if (cbdata.used && uri == &r->physical.rel_path) { in webdav_has_lock()
4144 http_status_set_error(r, 412); /* Precondition Failed */ in webdav_has_lock()
4162 webdav_xml_doc_error_lock_token_submitted(r, cbdata.b); in webdav_has_lock()
4171 #define webdav_has_lock(r, pconf, uri) 1 argument
4177 mod_webdav_propfind (request_st * const r, const plugin_config * const pconf) in mod_webdav_propfind() argument
4179 if (r->reqbody_length) { in mod_webdav_propfind()
4181 if (r->state == CON_STATE_READ_POST) { in mod_webdav_propfind()
4182 handler_t rc = r->con->reqbody_read(r); in mod_webdav_propfind()
4185 if (!webdav_reqbody_type_xml(r)) { in mod_webdav_propfind()
4186 http_status_set_error(r, 415); /* Unsupported Media Type */ in mod_webdav_propfind()
4198 http_status_set_error(r, 415); /* Unsupported Media Type */ in mod_webdav_propfind()
4218 pb.depth = webdav_parse_Depth(r); in mod_webdav_propfind()
4221 webdav_xml_doc_error_propfind_finite_depth(r); in mod_webdav_propfind()
4232 ? 0 != lstat(r->physical.path.ptr, &pb.st) in mod_webdav_propfind()
4233 : 0 != stat(r->physical.path.ptr, &pb.st)) { /* non-standard */ in mod_webdav_propfind()
4234 http_status_set_error(r, (errno == ENOENT) ? 404 : 403); in mod_webdav_propfind()
4238 if (!buffer_has_pathsep_suffix(&r->physical.path)) { in mod_webdav_propfind()
4240 if (0 != http_response_redirect_to_directory(r, 0)) in mod_webdav_propfind()
4242 buffer_append_char(&r->physical.path, '/'); in mod_webdav_propfind()
4243 buffer_append_char(&r->physical.rel_path, '/'); in mod_webdav_propfind()
4246 else if (buffer_has_pathsep_suffix(&r->physical.path)) { in mod_webdav_propfind()
4247 http_status_set_error(r, 403); in mod_webdav_propfind()
4260 if (r->reqbody_length) { in mod_webdav_propfind()
4261 if (NULL == (xml = webdav_parse_chunkqueue(r, pconf))) { in mod_webdav_propfind()
4262 http_status_set_error(r, 400); /* Bad Request */ in mod_webdav_propfind()
4286 log_error(r->conf.errh, __FILE__, __LINE__, in mod_webdav_propfind()
4289 http_status_set_error(r, 422); in mod_webdav_propfind()
4299 log_error(r->conf.errh, __FILE__, __LINE__, in mod_webdav_propfind()
4301 http_status_set_error(r, 400); /* Bad Request */ in mod_webdav_propfind()
4363 pb.r = r; in mod_webdav_propfind()
4365 pb.dst = &r->physical; in mod_webdav_propfind()
4372 webdav_xml_doctype(pb.b, r); in mod_webdav_propfind()
4384 http_chunk_append_buffer(r, pb.b); /*(might move/steal/reset buffer)*/ in mod_webdav_propfind()
4386 http_status_set_fin(r, 207); /* Multi-status */ in mod_webdav_propfind()
4398 webdav_xml_log_response(r); in mod_webdav_propfind()
4405 mod_webdav_mkcol (request_st * const r, const plugin_config * const pconf) in mod_webdav_mkcol() argument
4407 const int status = webdav_mkdir(pconf, &r->physical, -1); in mod_webdav_mkcol()
4409 http_status_set_fin(r, 201); /* Created */ in mod_webdav_mkcol()
4411 http_status_set_error(r, status); in mod_webdav_mkcol()
4418 mod_webdav_delete (request_st * const r, const plugin_config * const pconf) in mod_webdav_delete() argument
4421 if (NULL != strchr(r->target_orig.ptr, '#')) { in mod_webdav_delete()
4422 http_status_set_error(r, 403); in mod_webdav_delete()
4427 if (-1 == lstat(r->physical.path.ptr, &st)) { in mod_webdav_delete()
4428 http_status_set_error(r, (errno == ENOENT) ? 404 : 403); in mod_webdav_delete()
4432 if (0 != webdav_if_match_or_unmodified_since(r, &st)) { in mod_webdav_delete()
4433 http_status_set_error(r, 412); /* Precondition Failed */ in mod_webdav_delete()
4438 if (!buffer_has_pathsep_suffix(&r->physical.path)) { in mod_webdav_delete()
4440 http_response_redirect_to_directory(r, 308); in mod_webdav_delete()
4446 buffer_append_char(&r->physical.path, '/'); in mod_webdav_delete()
4447 buffer_append_char(&r->physical.rel_path, '/'); in mod_webdav_delete()
4451 buffer_append_char(&r->target, '/'); in mod_webdav_delete()
4452 http_header_response_set(r, HTTP_HEADER_CONTENT_LOCATION, in mod_webdav_delete()
4454 BUF_PTR_LEN(&r->target)); in mod_webdav_delete()
4459 if (-1 != webdav_parse_Depth(r)) { in mod_webdav_delete()
4466 http_status_set_error(r, 400); /* Bad Request */ in mod_webdav_delete()
4470 const int flags = (r->conf.force_lowercase_filenames) in mod_webdav_delete()
4473 if (0 == webdav_delete_dir(pconf, &r->physical, r, flags)) { in mod_webdav_delete()
4478 webdav_lock_delete_uri_col(pconf, &r->physical.rel_path); in mod_webdav_delete()
4479 http_status_set_fin(r, 204); /* No Content */ in mod_webdav_delete()
4482 webdav_xml_doc_multistatus(r, pconf); /* 207 Multi-status */ in mod_webdav_delete()
4486 stat_cache_delete_dir(BUF_PTR_LEN(&r->physical.path)); in mod_webdav_delete()
4488 else if (buffer_has_pathsep_suffix(&r->physical.path)) in mod_webdav_delete()
4489 http_status_set_error(r, 403); in mod_webdav_delete()
4491 const int status = webdav_delete_file(pconf, &r->physical); in mod_webdav_delete()
4493 webdav_lock_delete_uri(pconf, &r->physical.rel_path); in mod_webdav_delete()
4494 http_status_set_fin(r, 204); /* No Content */ in mod_webdav_delete()
4497 http_status_set_error(r, status); in mod_webdav_delete()
4506 mod_webdav_write_cq (request_st * const r, chunkqueue * const cq, const int fd) in mod_webdav_write_cq() argument
4510 ssize_t wr = chunkqueue_write_chunk(fd, cq, r->conf.errh); in mod_webdav_write_cq()
4514 http_status_set_error(r, (errno == ENOSPC) ? 507 : 403); in mod_webdav_write_cq()
4526 mod_webdav_write_single_file_chunk (request_st * const r, chunkqueue * const cq) in mod_webdav_write_single_file_chunk() argument
4536 if (mod_webdav_write_cq(r, cq, c->file.fd)) { in mod_webdav_write_single_file_chunk()
4557 mod_webdav_put_0 (request_st * const r, const plugin_config * const pconf) in mod_webdav_put_0() argument
4559 if (0 != webdav_if_match_or_unmodified_since(r, NULL)) { in mod_webdav_put_0()
4560 http_status_set_error(r, 412); /* Precondition Failed */ in mod_webdav_put_0()
4566 fd = fdevent_open_cloexec(r->physical.path.ptr, 0, in mod_webdav_put_0()
4570 if (0 != r->conf.etag_flags) { in mod_webdav_put_0()
4573 if (0 == fstat(fd, &st)) webdav_response_etag(r, &st); in mod_webdav_put_0()
4576 webdav_parent_modified(&r->physical.path); in mod_webdav_put_0()
4577 http_status_set_fin(r, 201); /* Created */ in mod_webdav_put_0()
4581 http_status_set_error(r, 405); /* Method Not Allowed */ in mod_webdav_put_0()
4586 webdav_delete_file(pconf, &r->physical); /*(ignore result)*/ in mod_webdav_put_0()
4590 fd = fdevent_open_cloexec(r->physical.path.ptr, 0, in mod_webdav_put_0()
4595 http_status_set_fin(r, 204); /* No Content */ in mod_webdav_put_0()
4599 http_status_set_error(r, 500); /* Internal Server Error */ in mod_webdav_put_0()
4605 mod_webdav_put_prep (request_st * const r, const plugin_config * const pconf) in mod_webdav_put_prep() argument
4607 if (buffer_has_pathsep_suffix(&r->physical.path)) { in mod_webdav_put_prep()
4609 http_status_set_error(r, 400); /* Bad Request */ in mod_webdav_put_prep()
4613 if (light_btst(r->rqst_htags, HTTP_HEADER_CONTENT_RANGE)) { in mod_webdav_put_prep()
4624 http_status_set_error(r, 400); /* Bad Request */ in mod_webdav_put_prep()
4629 if (0 == r->reqbody_length) in mod_webdav_put_prep()
4630 return mod_webdav_put_0(r, pconf); in mod_webdav_put_prep()
4638 size_t len = buffer_clen(&r->physical.path); in mod_webdav_put_prep()
4640 char *slash = memrchr(r->physical.path.ptr, '/', len); in mod_webdav_put_prep()
4641 if (slash == r->physical.path.ptr) slash = NULL; in mod_webdav_put_prep()
4643 fd = fdevent_open_cloexec(r->physical.path.ptr, 1, in mod_webdav_put_prep()
4649 buffer_append_string_len(&r->physical.path, CONST_STR_LEN("-XXXXXX")); in mod_webdav_put_prep()
4650 fd = fdevent_mkostemp(r->physical.path.ptr, 0); in mod_webdav_put_prep()
4651 if (fd >= 0) unlink(r->physical.path.ptr); in mod_webdav_put_prep()
4652 buffer_truncate(&r->physical.path, len); in mod_webdav_put_prep()
4658 http_status_set_error(r, 409); /* Conflict */ in mod_webdav_put_prep()
4661 http_status_set_error(r, 500); /* Internal Server Error */ in mod_webdav_put_prep()
4671 chunkqueue * const cq = &r->reqbody_queue; in mod_webdav_put_prep()
4673 if (!mod_webdav_write_cq(r, cq, fd)) { in mod_webdav_put_prep()
4680 chunkqueue_append_file_fd(cq, &r->physical.path, fd, 0, cqlen); in mod_webdav_put_prep()
4683 chunkqueue_append_file_fd(cq, &r->physical.path, fd, 0, 1); in mod_webdav_put_prep()
4702 mod_webdav_put_linkat_rename (request_st * const r, in mod_webdav_put_linkat_rename() argument
4706 chunkqueue * const cq = &r->reqbody_queue; in mod_webdav_put_linkat_rename()
4718 AT_FDCWD, r->physical.path.ptr, RENAME_NOREPLACE)) in mod_webdav_put_linkat_rename()
4719 http_status_set_fin(r, 201); /* Created */ in mod_webdav_put_linkat_rename()
4720 else if (0 == rename(pathtemp, r->physical.path.ptr)) in mod_webdav_put_linkat_rename()
4721 http_status_set_fin(r, 204); /* No Content */ /*(replaced)*/ in mod_webdav_put_linkat_rename()
4724 http_status_set_fin(r, 0 == lstat(r->physical.path.ptr, &st) in mod_webdav_put_linkat_rename()
4727 if (201 == http_status_get(r)) in mod_webdav_put_linkat_rename()
4728 webdav_parent_modified(&r->physical.path); in mod_webdav_put_linkat_rename()
4729 if (0 != rename(pathtemp, r->physical.path.ptr)) in mod_webdav_put_linkat_rename()
4733 http_status_set_error(r, 405); /* Method Not Allowed */ in mod_webdav_put_linkat_rename()
4735 http_status_set_error(r, 403); /* Forbidden */ in mod_webdav_put_linkat_rename()
4739 if (0 != r->conf.etag_flags in mod_webdav_put_linkat_rename()
4740 && http_status_get(r) < 300) { /*(201, 204)*/ in mod_webdav_put_linkat_rename()
4743 webdav_response_etag(r, &st); in mod_webdav_put_linkat_rename()
4756 mod_webdav_put_range (request_st * const r, const buffer * const h, in mod_webdav_put_range() argument
4765 http_status_set_error(r, 501); /* Not Implemented */ in mod_webdav_put_range()
4771 http_status_set_error(r, 501); /* Not Implemented */ in mod_webdav_put_range()
4775 const int ifd = fdevent_open_cloexec(r->physical.path.ptr, 0, in mod_webdav_put_range()
4778 http_status_set_error(r, (errno == ENOENT) ? 404 : 403); in mod_webdav_put_range()
4794 int rc = webdav_copytmp_rename(pconf, &r->physical, &r->physical, &fd); in mod_webdav_put_range()
4799 http_status_set_error(r, rc); in mod_webdav_put_range()
4809 http_status_set_error(r, 403); in mod_webdav_put_range()
4824 chunkqueue * const cq = &r->reqbody_queue; in mod_webdav_put_range()
4854 http_status_set_error(r, 500); /* Internal Server Error */ in mod_webdav_put_range()
4862 mod_webdav_write_cq(r, &r->reqbody_queue, fd); in mod_webdav_put_range()
4867 if (0 == rename(pconf->tmpb->ptr, r->physical.path.ptr)) in mod_webdav_put_range()
4870 AT_FDCWD, r->physical.path.ptr, 0)) in mod_webdav_put_range()
4874 stat_cache_delete_entry(BUF_PTR_LEN(&r->physical.path)); in mod_webdav_put_range()
4880 case EISDIR: http_status_set_error(r, 409); break; /* Conflict */ in mod_webdav_put_range()
4881 default: http_status_set_error(r, 403); break; /* Forbidden */ in mod_webdav_put_range()
4887 if (0 != r->conf.etag_flags && !http_status_is_set(r)) { in mod_webdav_put_range()
4889 if (0 != fstat(fd, &st)) r->conf.etag_flags = 0; in mod_webdav_put_range()
4893 if (0 != wc && !http_status_is_set(r)) in mod_webdav_put_range()
4894 http_status_set_error(r, (errno == ENOSPC) ? 507 : 403); in mod_webdav_put_range()
4896 if (!http_status_is_set(r)) { in mod_webdav_put_range()
4897 http_status_set_fin(r, 204); /* No Content */ in mod_webdav_put_range()
4898 if (0 != r->conf.etag_flags) webdav_response_etag(r, &st); in mod_webdav_put_range()
4906 mod_webdav_put (request_st * const r, const plugin_config * const pconf) in mod_webdav_put() argument
4908 if (r->state == CON_STATE_READ_POST) { in mod_webdav_put()
4909 int first_read = chunkqueue_is_empty(&r->reqbody_queue); in mod_webdav_put()
4910 handler_t rc = r->con->reqbody_read(r); in mod_webdav_put()
4913 && 0 != webdav_if_match_or_unmodified_since(r, NULL)) { in mod_webdav_put()
4914 http_status_set_error(r, 412); /* Precondition Failed */ in mod_webdav_put()
4921 if (0 != webdav_if_match_or_unmodified_since(r, NULL)) { in mod_webdav_put()
4922 http_status_set_error(r, 412); /* Precondition Failed */ in mod_webdav_put()
4929 http_header_request_get(r, HTTP_HEADER_CONTENT_RANGE, in mod_webdav_put()
4932 return mod_webdav_put_range(r, h, pconf); in mod_webdav_put()
4943 chunkqueue * const cq = &r->reqbody_queue; in mod_webdav_put()
4957 buffer_append_str2(tmpb, BUF_PTR_LEN(&r->physical.path), in mod_webdav_put()
4968 http_status_set_error(r, 500); /* Internal Server Error */ in mod_webdav_put()
4979 if (!mod_webdav_write_single_file_chunk(r, cq)) in mod_webdav_put()
4982 if (mod_webdav_put_linkat_rename(r, pathtemp)) in mod_webdav_put()
4992 http_status_set_error(r, 500); /* Internal Server Error */ in mod_webdav_put()
5000 mod_webdav_write_cq(r, cq, fd); in mod_webdav_put()
5003 if (0 != r->conf.etag_flags && !http_status_is_set(r)) { in mod_webdav_put()
5005 if (0 != fstat(fd, &st)) r->conf.etag_flags = 0; in mod_webdav_put()
5009 if (0 != wc && !http_status_is_set(r)) in mod_webdav_put()
5010 http_status_set_error(r, (errno == ENOSPC) ? 507 : 403); in mod_webdav_put()
5012 if (!http_status_is_set(r)) { in mod_webdav_put()
5014 http_status_set_fin(r, 0 == lstat(r->physical.path.ptr, &ste) in mod_webdav_put()
5017 if (201 == http_status_get(r)) in mod_webdav_put()
5018 webdav_parent_modified(&r->physical.path); in mod_webdav_put()
5019 if (0 == rename(pathtemp, r->physical.path.ptr)) { in mod_webdav_put()
5020 if (0 != r->conf.etag_flags) webdav_response_etag(r, &st); in mod_webdav_put()
5024 http_status_set_error(r, 405); /* Method Not Allowed */ in mod_webdav_put()
5026 http_status_set_error(r, 500); /* Internal Server Error */ in mod_webdav_put()
5038 mod_webdav_copymove_b (request_st * const r, const plugin_config * const pconf, physical_st * const… in mod_webdav_copymove_b() argument
5044 | (r->conf.force_lowercase_filenames in mod_webdav_copymove_b()
5047 | (r->http_method == HTTP_METHOD_MOVE in mod_webdav_copymove_b()
5055 http_header_request_get(r,HTTP_HEADER_OTHER,CONST_STR_LEN("Overwrite")); in mod_webdav_copymove_b()
5059 http_status_set_error(r, 400); /* Bad Request */ in mod_webdav_copymove_b()
5079 http_header_request_get(r,HTTP_HEADER_OTHER,CONST_STR_LEN("Destination")); in mod_webdav_copymove_b()
5081 http_status_set_error(r, 400); /* Bad Request */ in mod_webdav_copymove_b()
5091 sep = start + buffer_clen(&r->uri.scheme); in mod_webdav_copymove_b()
5092 if (0 != strncmp(start, r->uri.scheme.ptr, sep - start) in mod_webdav_copymove_b()
5094 http_status_set_error(r, 400); /* Bad Request */ in mod_webdav_copymove_b()
5100 http_status_set_error(r, 400); /* Bad Request */ in mod_webdav_copymove_b()
5103 if (!buffer_eq_slen(&r->uri.authority, start, sep - start) in mod_webdav_copymove_b()
5106 || (++start, !buffer_eq_slen(&r->uri.authority, in mod_webdav_copymove_b()
5109 http_status_set_error(r, 502); /* Bad Gateway */ in mod_webdav_copymove_b()
5122 http_status_set_error(r, 403); /* Forbidden */ in mod_webdav_copymove_b()
5128 http_status_set_error(r, 400); in mod_webdav_copymove_b()
5133 http_status_set_error(r, 400); in mod_webdav_copymove_b()
5162 force_assert(0 != r->physical.rel_path.used); in mod_webdav_copymove_b()
5166 const char * const p1 = r->physical.rel_path.ptr; in mod_webdav_copymove_b()
5171 remain = r->physical.rel_path.used - 1 - i; in mod_webdav_copymove_b()
5172 if (r->physical.path.used - 1 <= remain) { /*(should not happen)*/ in mod_webdav_copymove_b()
5173 http_status_set_error(r, 403); /* Forbidden */ in mod_webdav_copymove_b()
5176 if (0 == memcmp(r->physical.rel_path.ptr+i, /*(suffix match)*/ in mod_webdav_copymove_b()
5177 r->physical.path.ptr + r->physical.path.used-1-remain, in mod_webdav_copymove_b()
5183 r->physical.path.ptr, in mod_webdav_copymove_b()
5184 r->physical.path.used - 1 - remain, in mod_webdav_copymove_b()
5188 http_status_set_error(r, 403); /* Forbidden */ in mod_webdav_copymove_b()
5195 buffer_copy_path_len2(dst_path, BUF_PTR_LEN(&r->physical.doc_root), in mod_webdav_copymove_b()
5198 http_status_set_error(r, 403); /* Forbidden */ in mod_webdav_copymove_b()
5203 if (r->physical.path.used <= dst_path->used in mod_webdav_copymove_b()
5204 && 0 == memcmp(r->physical.path.ptr, dst_path->ptr, in mod_webdav_copymove_b()
5205 r->physical.path.used-1) in mod_webdav_copymove_b()
5206 && (buffer_has_pathsep_suffix(&r->physical.path) in mod_webdav_copymove_b()
5207 || dst_path->ptr[r->physical.path.used-1] == '/' in mod_webdav_copymove_b()
5208 || dst_path->ptr[r->physical.path.used-1] == '\0')) { in mod_webdav_copymove_b()
5210 http_status_set_error(r, 403); /* Forbidden */ in mod_webdav_copymove_b()
5215 if (-1 == lstat(r->physical.path.ptr, &st)) { in mod_webdav_copymove_b()
5217 http_status_set_error(r, (errno == ENOENT) ? 404 : 403); in mod_webdav_copymove_b()
5221 if (0 != webdav_if_match_or_unmodified_since(r, &st)) { in mod_webdav_copymove_b()
5222 http_status_set_error(r, 412); /* Precondition Failed */ in mod_webdav_copymove_b()
5227 if (!buffer_has_pathsep_suffix(&r->physical.path)) { in mod_webdav_copymove_b()
5228 http_response_redirect_to_directory(r, 308); in mod_webdav_copymove_b()
5242 if (!webdav_has_lock(r, pconf, dst_rel_path)) in mod_webdav_copymove_b()
5245 const int depth = webdav_parse_Depth(r); in mod_webdav_copymove_b()
5247 http_status_set_error(r, 400); /* Bad Request */ in mod_webdav_copymove_b()
5251 if (r->http_method == HTTP_METHOD_MOVE) { in mod_webdav_copymove_b()
5252 http_status_set_error(r, 400); /* Bad Request */ in mod_webdav_copymove_b()
5275 http_status_set_fin(r, status); in mod_webdav_copymove_b()
5276 webdav_prop_copy_uri(pconf, &r->physical.rel_path, in mod_webdav_copymove_b()
5280 http_status_set_error(r, status); in mod_webdav_copymove_b()
5284 if (0 == webdav_copymove_dir(pconf, &r->physical, dst, r, flags)) { in mod_webdav_copymove_b()
5285 if (r->http_method == HTTP_METHOD_MOVE) in mod_webdav_copymove_b()
5286 webdav_lock_delete_uri_col(pconf, &r->physical.rel_path); in mod_webdav_copymove_b()
5290 http_status_set_fin(r, 200); /* OK */ in mod_webdav_copymove_b()
5297 webdav_xml_doc_multistatus(r, pconf); /* 207 Multi-status */ in mod_webdav_copymove_b()
5300 if (r->http_method == HTTP_METHOD_MOVE) in mod_webdav_copymove_b()
5301 stat_cache_delete_dir(BUF_PTR_LEN(&r->physical.path)); in mod_webdav_copymove_b()
5304 else if (buffer_has_pathsep_suffix(&r->physical.path)) { in mod_webdav_copymove_b()
5305 http_status_set_error(r, 403); /* Forbidden */ in mod_webdav_copymove_b()
5314 if (!webdav_has_lock(r, pconf, dst_rel_path)) in mod_webdav_copymove_b()
5325 if (NULL != (sep = strrchr(r->physical.path.ptr, '/'))) { in mod_webdav_copymove_b()
5326 size_t len = r->physical.path.used - 1 in mod_webdav_copymove_b()
5327 - (sep - r->physical.path.ptr); in mod_webdav_copymove_b()
5335 http_status_set_error(r, 403); /* Forbidden */ in mod_webdav_copymove_b()
5340 http_status_set_fin(r, 204); /* No Content */ in mod_webdav_copymove_b()
5348 if (http_status_is_set(r)) break; in mod_webdav_copymove_b()
5355 if (!http_status_is_set(r)) { in mod_webdav_copymove_b()
5357 http_status_set_fin(r, 201); /* Created */ in mod_webdav_copymove_b()
5365 http_status_set_error(r, 409); /* Conflict */ in mod_webdav_copymove_b()
5371 http_status_set_error(r, 412); /* Precondition Failed */ in mod_webdav_copymove_b()
5376 http_status_set_error(r, 409); /* Conflict */ in mod_webdav_copymove_b()
5380 http_status_set_fin(r, 204); /* No Content */ in mod_webdav_copymove_b()
5383 rc = webdav_copymove_file(pconf, &r->physical, dst, &flags); in mod_webdav_copymove_b()
5385 if (r->http_method == HTTP_METHOD_MOVE) in mod_webdav_copymove_b()
5386 webdav_lock_delete_uri(pconf, &r->physical.rel_path); in mod_webdav_copymove_b()
5389 http_status_set_error(r, rc); in mod_webdav_copymove_b()
5397 mod_webdav_copymove (request_st * const r, const plugin_config * const pconf) in mod_webdav_copymove() argument
5404 handler_t rc = mod_webdav_copymove_b(r, pconf, &dst); in mod_webdav_copymove()
5415 mod_webdav_proppatch (request_st * const r, const plugin_config * const pconf) in mod_webdav_proppatch() argument
5418 return webdav_405_no_db(r); in mod_webdav_proppatch()
5420 if (r->state == CON_STATE_READ_POST) { in mod_webdav_proppatch()
5421 handler_t rc = r->con->reqbody_read(r); in mod_webdav_proppatch()
5425 if (0 == r->reqbody_length) { in mod_webdav_proppatch()
5426 http_status_set_error(r, 400); /* Bad Request */ in mod_webdav_proppatch()
5430 if (!webdav_reqbody_type_xml(r)) { in mod_webdav_proppatch()
5431 http_status_set_error(r, 415); /* Unsupported Media Type */ in mod_webdav_proppatch()
5436 if (0 != lstat(r->physical.path.ptr, &st)) { in mod_webdav_proppatch()
5437 http_status_set_error(r, (errno == ENOENT) ? 404 : 403); in mod_webdav_proppatch()
5441 if (0 != webdav_if_match_or_unmodified_since(r, &st)) { in mod_webdav_proppatch()
5442 http_status_set_error(r, 412); /* Precondition Failed */ in mod_webdav_proppatch()
5447 if (!buffer_has_pathsep_suffix(&r->physical.path)) { in mod_webdav_proppatch()
5449 if (0 != http_response_redirect_to_directory(r, 0)) in mod_webdav_proppatch()
5451 buffer_append_char(&r->physical.path, '/'); in mod_webdav_proppatch()
5452 buffer_append_char(&r->physical.rel_path, '/'); in mod_webdav_proppatch()
5455 else if (buffer_has_pathsep_suffix(&r->physical.path)) { in mod_webdav_proppatch()
5456 http_status_set_error(r, 403); in mod_webdav_proppatch()
5460 xmlDocPtr const xml = webdav_parse_chunkqueue(r, pconf); in mod_webdav_proppatch()
5462 http_status_set_error(r, 400); /* Bad Request */ in mod_webdav_proppatch()
5469 http_status_set_error(r, 422); /* Unprocessable Entity */ in mod_webdav_proppatch()
5475 http_status_set_error(r, 500); /* Internal Server Error */ in mod_webdav_proppatch()
5510 log_error(r->conf.errh, __FILE__, __LINE__, in mod_webdav_proppatch()
5514 webdav_double_buffer(r, ms); in mod_webdav_proppatch()
5533 webdav_double_buffer(r, ms); in mod_webdav_proppatch()
5543 webdav_prop_update(pconf, &r->physical.rel_path, in mod_webdav_proppatch()
5550 webdav_prop_delete(pconf, &r->physical.rel_path, in mod_webdav_proppatch()
5561 http_header_request_get(r, HTTP_HEADER_USER_AGENT, in mod_webdav_proppatch()
5569 webdav_xml_response_status(r, &r->physical.path, 200); in mod_webdav_proppatch()
5573 http_status_set_fin(r, 204); /* No Content */ in mod_webdav_proppatch()
5575 webdav_xml_doc_multistatus_response(r, pconf, ms); in mod_webdav_proppatch()
5578 http_status_set_error(r, 500); /* Internal Server Error */ in mod_webdav_proppatch()
5593 request_st *r; member
5608 webdav_double_buffer(cbdata->r, cbdata->b); in webdav_conflicting_lock_cb()
5614 mod_webdav_lock (request_st * const r, const plugin_config * const pconf) in mod_webdav_lock() argument
5639 if (r->reqbody_length) { in mod_webdav_lock()
5640 if (r->state == CON_STATE_READ_POST) { in mod_webdav_lock()
5641 handler_t rc = r->con->reqbody_read(r); in mod_webdav_lock()
5649 array_get_element_klen(&r->env, CONST_STR_LEN("REMOTE_USER")); in mod_webdav_lock()
5662 { r->physical.rel_path.ptr, r->physical.rel_path.used, 0}, /*lockroot*/ in mod_webdav_lock()
5672 http_header_request_get(r, HTTP_HEADER_OTHER, CONST_STR_LEN("Timeout")); in mod_webdav_lock()
5705 if (r->reqbody_length) { in mod_webdav_lock()
5706 lockdata.depth = webdav_parse_Depth(r); in mod_webdav_lock()
5712 http_status_set_error(r, 400); /* Bad Request */ in mod_webdav_lock()
5716 xmlDocPtr const xml = webdav_parse_chunkqueue(r, pconf); in mod_webdav_lock()
5718 http_status_set_error(r, 400); /* Bad Request */ in mod_webdav_lock()
5725 http_status_set_error(r, 422); /* Unprocessable Entity */ in mod_webdav_lock()
5769 http_status_set_error(r, 422); /* Unprocessable Entity */ in mod_webdav_lock()
5778 cbdata.r = r; in mod_webdav_lock()
5782 if (0 != cbdata.b->used || !chunkqueue_is_empty(&r->write_queue)) { in mod_webdav_lock()
5784 webdav_xml_doc_error_no_conflicting_lock(r, cbdata.b); in mod_webdav_lock()
5792 if (0 != lstat(r->physical.path.ptr, &st)) { in mod_webdav_lock()
5817 (errno == ENOENT && !buffer_has_pathsep_suffix(&r->physical.path)) in mod_webdav_lock()
5818 ? fdevent_open_cloexec(r->physical.path.ptr, 0, in mod_webdav_lock()
5824 if (0 != fstat(fd, &st)) r->conf.etag_flags = 0; in mod_webdav_lock()
5827 webdav_parent_modified(&r->physical.path); in mod_webdav_lock()
5830 http_status_set_error(r, 403); /* Forbidden */ in mod_webdav_lock()
5833 else if (0 != lstat(r->physical.path.ptr, &st)) { in mod_webdav_lock()
5834 http_status_set_error(r, 403); /* Forbidden */ in mod_webdav_lock()
5841 if (0 != webdav_if_match_or_unmodified_since(r, &st)) { in mod_webdav_lock()
5842 http_status_set_error(r, 412); /* Precondition Failed */ in mod_webdav_lock()
5850 if (!buffer_has_pathsep_suffix(&r->physical.path)) { in mod_webdav_lock()
5852 http_response_redirect_to_directory(r, 308); in mod_webdav_lock()
5859 else if (buffer_has_pathsep_suffix(&r->physical.path)) { in mod_webdav_lock()
5860 http_status_set_error(r, 403); /* Forbidden */ in mod_webdav_lock()
5881 http_header_response_set(r, HTTP_HEADER_OTHER, in mod_webdav_lock()
5884 webdav_xml_doc_lock_acquired(r, pconf, &lockdata); in mod_webdav_lock()
5885 if (0 != r->conf.etag_flags && !S_ISDIR(st.st_mode)) in mod_webdav_lock()
5886 webdav_response_etag(r, &st); in mod_webdav_lock()
5887 http_status_set_fin(r, created ? 201 : 200); /* Created | OK */ in mod_webdav_lock()
5890 http_status_set_error(r, 500); /* Internal Server Error */ in mod_webdav_lock()
5899 h = http_header_request_get(r, HTTP_HEADER_OTHER, CONST_STR_LEN("If")); in mod_webdav_lock()
5903 http_status_set_error(r, 400); /* Bad Request */ in mod_webdav_lock()
5916 webdav_xml_doc_lock_acquired(r, pconf, &lockdata); in mod_webdav_lock()
5917 http_status_set_fin(r, 200); /* OK */ in mod_webdav_lock()
5920 http_status_set_error(r, 412); /* Precondition Failed */ in mod_webdav_lock()
5930 mod_webdav_unlock (request_st * const r, const plugin_config * const pconf) in mod_webdav_unlock() argument
5933 http_header_request_get(r, HTTP_HEADER_OTHER, in mod_webdav_unlock()
5938 http_status_set_error(r, 400); /* Bad Request */ in mod_webdav_unlock()
5944 array_get_element_klen(&r->env, CONST_STR_LEN("REMOTE_USER")); in mod_webdav_unlock()
5948 { r->physical.rel_path.ptr, r->physical.rel_path.used, 0}, /*lockroot*/ in mod_webdav_unlock()
5961 http_status_set_fin(r, 204); /* No Content */ in mod_webdav_unlock()
5969 webdav_xml_doc_error_lock_token_matches_request_uri(r); in mod_webdav_unlock()
5972 http_status_set_error(r, 403); /* Forbidden */ in mod_webdav_unlock()
5982 (plugin_config *)r->plugin_ctx[((plugin_data *)p_d)->id]; in SUBREQUEST_FUNC()
5985 switch (r->http_method) { in SUBREQUEST_FUNC()
5987 return mod_webdav_propfind(r, pconf); in SUBREQUEST_FUNC()
5989 return mod_webdav_mkcol(r, pconf); in SUBREQUEST_FUNC()
5991 return mod_webdav_delete(r, pconf); in SUBREQUEST_FUNC()
5993 return mod_webdav_put(r, pconf); in SUBREQUEST_FUNC()
5996 return mod_webdav_copymove(r, pconf); in SUBREQUEST_FUNC()
5999 return mod_webdav_proppatch(r, pconf); in SUBREQUEST_FUNC()
6003 return mod_webdav_lock(r, pconf); in SUBREQUEST_FUNC()
6005 return mod_webdav_unlock(r, pconf); in SUBREQUEST_FUNC()
6008 http_status_set_error(r, 501); /* Not Implemented */ in SUBREQUEST_FUNC()
6019 force_assert(2 <= r->physical.path.used); in PHYSICALPATH_FUNC()
6027 switch (r->http_method) { in PHYSICALPATH_FUNC()
6054 mod_webdav_patch_config(r, (plugin_data *)p_d, &pconf); in PHYSICALPATH_FUNC()
6058 http_status_set_error(r, 403); /* Forbidden */ in PHYSICALPATH_FUNC()
6062 if (reject_reqbody && r->reqbody_length) { in PHYSICALPATH_FUNC()
6069 http_status_set_error(r, 415); /* Unsupported Media Type */ in PHYSICALPATH_FUNC()
6073 if (check_lock_src && !webdav_has_lock(r, &pconf, &r->physical.rel_path)) in PHYSICALPATH_FUNC()
6077 switch (r->http_method) { in PHYSICALPATH_FUNC()
6079 if (mod_webdav_put_prep(r, &pconf) == HANDLER_FINISHED) in PHYSICALPATH_FUNC()
6086 r->handler_module = ((plugin_data *)p_d)->self; in PHYSICALPATH_FUNC()
6087 r->conf.stream_request_body &= in PHYSICALPATH_FUNC()
6089 r->plugin_ctx[((plugin_data *)p_d)->id] = &pconf; in PHYSICALPATH_FUNC()
6091 mod_webdav_subrequest_handler(r, p_d); /*p->handle_subrequest()*/ in PHYSICALPATH_FUNC()
6093 r->plugin_ctx[((plugin_data *)p_d)->id] = NULL; in PHYSICALPATH_FUNC()
6095 r->plugin_ctx[((plugin_data *)p_d)->id] = /* save pconf */ in PHYSICALPATH_FUNC()
6104 &r->plugin_ctx[((plugin_data *)p_d)->id]; in REQUEST_FUNC()
6108 chunkqueue_set_tempdirs(&r->reqbody_queue, /* reset sz */ in REQUEST_FUNC()
6109 r->reqbody_queue.tempdirs, 0); in REQUEST_FUNC()