summaryrefslogtreecommitdiff
path: root/ucb
diff options
context:
space:
mode:
authorMichael Stahl <michael.stahl@allotropia.de>2023-01-19 12:28:57 +0100
committerMichael Stahl <michael.stahl@allotropia.de>2023-01-19 15:05:57 +0000
commit261b1237532f431963358a7b4ac5fd1ad6e5d223 (patch)
treee6b9ea3765b127a85870fe8c18699fee273daab1 /ucb
parent925dfcb507c4054e00e5aa9acdbfa095b6a32d05 (diff)
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.stahl@allotropia.de>
Diffstat (limited to 'ucb')
-rw-r--r--ucb/source/ucp/webdav-curl/CurlSession.cxx12
1 files changed, 7 insertions, 5 deletions
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 }