Print

Print


Thanks @bbockelm @matyasselmeci 

The fix which Brian described (which I interpreted as snippet (x) below) is needed; it's quite local and doesn't really overlap with #1976; with a fully specified range like 100-200 it solves the current issue. But during tests I've seen it can leave curl hanging (waiting for the last ('0') chunk), when given an open range like '100-' (but not '0-'). This comes about because we have some problems handling those ranges. That should be fixed, which seems to go overlap a lot with what I'm preparing for #1976.

So if it's ok I'd hold off with a PR for this until I get a fix for #1976 ready (but that might be another ~week), and then put a fix for this with that work (or make the PR at the same time).

--
(x) tried with this change:

{code}
diff --git a/src/XrdHttp/XrdHttpReq.cc b/src/XrdHttp/XrdHttpReq.cc
index e119181..d601f47 100644
--- a/src/XrdHttp/XrdHttpReq.cc
+++ b/src/XrdHttp/XrdHttpReq.cc
@@ -2214,7 +2214,11 @@ int XrdHttpReq::PostProcessHTTPReq(bool final_) {
                   s += responseHeader.c_str();
                 }
 
-                prot->SendSimpleResp(206, NULL, (char *)s.c_str(), NULL, cnt, keepalive);
+                if (m_transfer_encoding_chunked && m_trailer_headers) {
+                  prot->StartChunkedResp(206, NULL, (char *)s.c_str(), cnt, keepalive);
+                } else {
+                  prot->SendSimpleResp(206, NULL, (char *)s.c_str(), NULL, cnt, keepalive);
+                }
                 return 0;
               } else
                 if (rwOps.size() > 1) {
{code}

-- 
Reply to this email directly or view it on GitHub:
https://github.com/xrootd/xrootd/issues/2076#issuecomment-1692004330
You are receiving this because you are subscribed to this thread.

Message ID: <[log in to unmask]>

########################################################################
Use REPLY-ALL to reply to list

To unsubscribe from the XROOTD-DEV list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1