ucb/source/ucp/webdav-curl/CurlSession.cxx |   15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)

New commits:
commit c8400f5acc36d2cf0c007260bdc94534a53bba90
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Thu Mar 14 15:47:28 2024 +0100
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Thu Mar 14 18:59:16 2024 +0100

    ucb: webdav-curl: always set CURLOPT_NOBODY for HEAD
    
    Otherwise there will be timeout that depends on when the server will
    close the connection, which varies by server but can be several minutes;
    getting a potential error document from the server for this one request
    when logging is enabled is less important.
    
    Change-Id: I505b014b148ba009c400d37d826c9edb8c3a6da2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164838
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>

diff --git a/ucb/source/ucp/webdav-curl/CurlSession.cxx 
b/ucb/source/ucp/webdav-curl/CurlSession.cxx
index 420e1123d589..4dde0d512e61 100644
--- a/ucb/source/ucp/webdav-curl/CurlSession.cxx
+++ b/ucb/source/ucp/webdav-curl/CurlSession.cxx
@@ -229,15 +229,6 @@ struct CurlOption
     }
 };
 
-// NOBODY will prevent logging the response body in ProcessRequest() exception
-// handler, so only use it if logging is disabled
-const CurlOption g_NoBody{ CURLOPT_NOBODY,
-                           sal_detail_log_report(SAL_DETAIL_LOG_LEVEL_INFO, 
"ucb.ucp.webdav.curl")
-                                   == SAL_DETAIL_LOG_ACTION_IGNORE
-                               ? 1L
-                               : 0L,
-                           nullptr };
-
 /// combined guard class to ensure things are released in correct order,
 /// particularly in ProcessRequest() error handling
 class Guard
@@ -1969,7 +1960,11 @@ auto CurlSession::HEAD(OUString const& rURIReference, 
::std::vector<OUString> co
     CurlUri const uri(CurlProcessor::URIReferenceToURI(*this, rURIReference));
 
     ::std::vector<CurlOption> const options{
-        g_NoBody, { CURLOPT_CUSTOMREQUEST, "HEAD", "CURLOPT_CUSTOMREQUEST" }
+        // NOBODY will prevent logging the response body in ProcessRequest()
+        // exception, but omitting it here results in a long timeout until the
+        // server closes the connection, which is worse
+        { CURLOPT_NOBODY, 1L, nullptr },
+        { CURLOPT_CUSTOMREQUEST, "HEAD", "CURLOPT_CUSTOMREQUEST" }
     };
 
     ::std::pair<::std::vector<OUString> const&, DAVResource&> const 
headers(rHeaderNames,

Reply via email to