}
}
- {
- int ret = out_crf->init();
- if (ret < 0) {
- return set_cr_error(ret);
- }
- }
-
do {
bl.clear();
}
if (retcode < 0) {
- ldout(20) << __func__ << ": in_crf->read() retcode=" << retcode << dendl;
+ ldout(cct, 20) << __func__ << ": in_crf->read() retcode=" << retcode << dendl;
return set_cr_error(ret);
}
} while (need_retry);
break;
}
+ if (total_read == 0) {
+#warning need to lock in_req->headers
+ for (auto h : in_req->get_out_headers()) {
+ if (h.first == "CONTENT_LENGTH") {
+ out_req->set_send_length(atoi(h.second.c_str()));
+ } else {
+ out_req->append_header(h.first, h.second);
+ }
+ }
+ int ret = out_crf->init();
+ if (ret < 0) {
+ return set_cr_error(ret);
+ }
+dout(0) << __FILE__ << ":" << __LINE__ << ": headers=" << in_req->get_out_headers() << dendl;
+ }
+
+ total_read += bl.length();
+
yield {
ret = out_crf->write(bl);
if (ret < 0) {
}
if (retcode < 0) {
- ldout(20) << __func__ << ": out_crf->write() retcode=" << retcode << dendl;
+ ldout(cct, 20) << __func__ << ": out_crf->write() retcode=" << retcode << dendl;
return set_cr_error(ret);
}
RGWStreamRWHTTPResourceCRF *out_crf{nullptr};
bufferlist bl;
bool need_retry{false};
+ uint64_t total_read{0};
int ret{0};
public:
TestSpliceCR(CephContext *_cct, RGWHTTPManager *_mgr,