ucb/source/ucp/webdav-curl/CurlSession.cxx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
New commits: commit 6ce53d79c45ca97d5cd9ee0d841366701cb1082e Author: Michael Stahl <[email protected]> AuthorDate: Thu Jan 19 12:28:57 2023 +0100 Commit: Miklos Vajna <[email protected]> CommitDate: Fri Jan 20 14:43:43 2023 +0000 tdf#153039 ucb: webdav-curl: fix POST, which was actually doing PUT The problem is that first CURLOPT_POST was set and later CURLOPT_UPLOAD, which overrides the HTTP method to PUT. Move this out to the 4 functions that need it. Change-Id: Ibd555dcc00a03baa1bb300a9ab9905f383179c67 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145786 Tested-by: Jenkins Reviewed-by: Michael Stahl <[email protected]> (cherry picked from commit 261b1237532f431963358a7b4ac5fd1ad6e5d223) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145797 Reviewed-by: Miklos Vajna <[email protected]> diff --git a/ucb/source/ucp/webdav-curl/CurlSession.cxx b/ucb/source/ucp/webdav-curl/CurlSession.cxx index 85b2edc3c68a..9b66ff0d0f9b 100644 --- a/ucb/source/ucp/webdav-curl/CurlSession.cxx +++ b/ucb/source/ucp/webdav-curl/CurlSession.cxx @@ -872,9 +872,6 @@ auto CurlProcessor::ProcessRequestImpl( oUploadSource.emplace(*pInData); rc = curl_easy_setopt(rSession.m_pCurl.get(), CURLOPT_READDATA, &*oUploadSource); assert(rc == CURLE_OK); - // libcurl won't upload without setting this - rc = curl_easy_setopt(rSession.m_pCurl.get(), CURLOPT_UPLOAD, 1L); - assert(rc == CURLE_OK); } rSession.m_ErrorBuffer[0] = '\0'; @@ -1636,6 +1633,7 @@ auto CurlProcessor::PropFind( curl_off_t const len(xSeqOutStream->getWrittenBytes().getLength()); ::std::vector<CurlOption> const options{ + { CURLOPT_UPLOAD, 1L, nullptr }, { CURLOPT_CUSTOMREQUEST, "PROPFIND", "CURLOPT_CUSTOMREQUEST" }, // note: Sharepoint cannot handle "Transfer-Encoding: chunked" { CURLOPT_INFILESIZE_LARGE, len, nullptr, CurlOption::Type::CurlOffT } @@ -1790,6 +1788,7 @@ auto CurlSession::PROPPATCH(OUString const& rURIReference, curl_off_t const len(xSeqOutStream->getWrittenBytes().getLength()); ::std::vector<CurlOption> const options{ + { CURLOPT_UPLOAD, 1L, nullptr }, { CURLOPT_CUSTOMREQUEST, "PROPPATCH", "CURLOPT_CUSTOMREQUEST" }, // note: Sharepoint cannot handle "Transfer-Encoding: chunked" { CURLOPT_INFILESIZE_LARGE, len, nullptr, CurlOption::Type::CurlOffT } @@ -1943,8 +1942,10 @@ auto CurlSession::PUT(OUString const& rURIReference, // lock m_Mutex after accessing global LockStore to avoid deadlock // note: Nextcloud 20 cannot handle "Transfer-Encoding: chunked" - ::std::vector<CurlOption> const options{ { CURLOPT_INFILESIZE_LARGE, len, nullptr, - CurlOption::Type::CurlOffT } }; + ::std::vector<CurlOption> const options{ + { CURLOPT_UPLOAD, 1L, nullptr }, // libcurl won't upload without setting this + { CURLOPT_INFILESIZE_LARGE, len, nullptr, CurlOption::Type::CurlOffT } + }; CurlProcessor::ProcessRequest(*this, uri, "PUT", options, &rEnv, ::std::move(pList), nullptr, &rxInStream, nullptr); @@ -2125,6 +2126,7 @@ auto CurlProcessor::Lock( } ::std::vector<CurlOption> const options{ + { CURLOPT_UPLOAD, 1L, nullptr }, { CURLOPT_CUSTOMREQUEST, "LOCK", "CURLOPT_CUSTOMREQUEST" }, // note: Sharepoint cannot handle "Transfer-Encoding: chunked" { CURLOPT_INFILESIZE_LARGE, len, nullptr, CurlOption::Type::CurlOffT }
