XrdHttpReq::parseLine

makes all HTTP headers visible in a map, which can be used by external plug-ins.

The decoding function for range requests uses strtok_r, which writes a \0 bytes into the string.

Afterwards we assign the range value in the external header map, so that instead of seeing:

allheaders["Range"] = "bytes=2-8"

we see only

allheaderes["Range"] ="bytes"

which breaks range requests in external plug-ins.

The simple solution is to move

 // We memorize the heaers also as a string                                                                                                                                              
    // because external plugins may need to process it differently                                                                                                                          
    std::string ss = val;
    trim(ss);
    allheaders[key] = ss;

before all the header key parsing is called ...


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

[ { "@context": "http://schema.org", "@type": "EmailMessage", "potentialAction": { "@type": "ViewAction", "target": "https://github.com/xrootd/xrootd/issues/1399", "url": "https://github.com/xrootd/xrootd/issues/1399", "name": "View Issue" }, "description": "View this Issue on GitHub", "publisher": { "@type": "Organization", "name": "GitHub", "url": "https://github.com" } } ]

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