@amadio commented on this pull request. > @@ -1798,7 +1798,16 @@ XrdHttpReq::PostProcessChecksum(std::string &digest_header) { if (convert_to_base64) {free(digest_value);} return 0; } else { - prot->SendSimpleResp(500, NULL, NULL, "Underlying filesystem failed to calculate checksum.", 0, false); + // This is a result of the "Ugly" hack put in place to prevent a failing stat() on a + // non-manager server to fail a transfer. + // In the case a user issues a GET with a 'Want-Digest' header on a non-existing file, the non-failing + // stat() will result in a failed checksum query giving a 500 error back to the user. + // Here we just return a 404 instead. httpStatusCode and httpStatusText contain the right reason why the request failed. + if(xrderrcode != kXR_NotFound) { Overriding is what used to be done, so I understand @ccaffy's choice. However, I agree that your suggestion is an improvement. I suppose we could have something like ```cpp switch(xrderrcode) { case kXR_NotFound: break; // reuse error code and message already set case kXR_Unsupported: httpStatusCode = 501; break; default: httpStatusCode = 500; httpStatusText = "Underlying filesystem failed to calculate checksum."; } prot->SendSimpleResp(httpStatusCode, NULL, NULL, httpStatusText.c_str(), httpStatusText.length(), false); ``` -- Reply to this email directly or view it on GitHub: https://github.com/xrootd/xrootd/pull/2019#discussion_r1211159528 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