diff --git a/internal/http/services/owncloud/ocdav/put.go b/internal/http/services/owncloud/ocdav/put.go index 2e2c8225c8..f28a423404 100644 --- a/internal/http/services/owncloud/ocdav/put.go +++ b/internal/http/services/owncloud/ocdav/put.go @@ -250,39 +250,37 @@ func (s *svc) handlePut(ctx context.Context, w http.ResponseWriter, r *http.Requ } } - if length > 0 { - httpReq, err := rhttp.NewRequest(ctx, http.MethodPut, ep, r.Body) - if err != nil { - w.WriteHeader(http.StatusInternalServerError) - return - } - httpReq.Header.Set(datagateway.TokenTransportHeader, token) + httpReq, err := rhttp.NewRequest(ctx, http.MethodPut, ep, r.Body) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + return + } + httpReq.Header.Set(datagateway.TokenTransportHeader, token) - httpRes, err := s.client.Do(httpReq) - if err != nil { - log.Error().Err(err).Msg("error doing PUT request to data service") - w.WriteHeader(http.StatusInternalServerError) + httpRes, err := s.client.Do(httpReq) + if err != nil { + log.Error().Err(err).Msg("error doing PUT request to data service") + w.WriteHeader(http.StatusInternalServerError) + return + } + defer httpRes.Body.Close() + if httpRes.StatusCode != http.StatusOK { + if httpRes.StatusCode == http.StatusPartialContent { + w.WriteHeader(http.StatusPartialContent) return } - defer httpRes.Body.Close() - if httpRes.StatusCode != http.StatusOK { - if httpRes.StatusCode == http.StatusPartialContent { - w.WriteHeader(http.StatusPartialContent) - return - } - if httpRes.StatusCode == errtypes.StatusChecksumMismatch { - w.WriteHeader(http.StatusBadRequest) - b, err := Marshal(exception{ - code: SabredavBadRequest, - message: "The computed checksum does not match the one received from the client.", - }) - HandleWebdavError(&log, w, b, err) - return - } - log.Error().Err(err).Msg("PUT request to data server failed") - w.WriteHeader(httpRes.StatusCode) + if httpRes.StatusCode == errtypes.StatusChecksumMismatch { + w.WriteHeader(http.StatusBadRequest) + b, err := Marshal(exception{ + code: SabredavBadRequest, + message: "The computed checksum does not match the one received from the client.", + }) + HandleWebdavError(&log, w, b, err) return } + log.Error().Err(err).Msg("PUT request to data server failed") + w.WriteHeader(httpRes.StatusCode) + return } ok, err := chunking.IsChunked(ref.Path)