ucb/source/ucp/webdav-curl/CurlSession.cxx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
New commits: commit 261b1237532f431963358a7b4ac5fd1ad6e5d223 Author: Michael Stahl <michael.st...@allotropia.de> AuthorDate: Thu Jan 19 12:28:57 2023 +0100 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Thu Jan 19 15:05:57 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 <michael.st...@allotropia.de> diff --git a/ucb/source/ucp/webdav-curl/CurlSession.cxx b/ucb/source/ucp/webdav-curl/CurlSession.cxx index 7353c8c9fa7e..1632881cb824 100644 --- a/ucb/source/ucp/webdav-curl/CurlSession.cxx +++ b/ucb/source/ucp/webdav-curl/CurlSession.cxx @@ -875,9 +875,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'; @@ -1638,6 +1635,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 } @@ -1792,6 +1790,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 } @@ -1945,8 +1944,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); @@ -2127,6 +2128,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 }