diff --git a/changelog/unreleased/fix-declining-unaccepted-share.md b/changelog/unreleased/fix-declining-unaccepted-share.md new file mode 100644 index 00000000000..efdfd1ec82d --- /dev/null +++ b/changelog/unreleased/fix-declining-unaccepted-share.md @@ -0,0 +1,6 @@ +Bugfix: Return OK when trying to delete a non existing reference + +When the gateway declines a share we can ignore a non existing reference. + +https://github.com/cs3org/reva/pull/2154 +https://github.com/owncloud/ocis/pull/2603 diff --git a/internal/grpc/services/gateway/usershareprovider.go b/internal/grpc/services/gateway/usershareprovider.go index 7243b4bae4b..cd86d530981 100644 --- a/internal/grpc/services/gateway/usershareprovider.go +++ b/internal/grpc/services/gateway/usershareprovider.go @@ -382,6 +382,7 @@ func (s *svc) removeReference(ctx context.Context, resourceID *provider.Resource return status.NewInternal(ctx, err, "gateway: error calling Stat for the share resource id: "+resourceID.String()) } + // FIXME how can we delete a reference if the original resource was deleted? if statRes.Status.Code != rpc.Code_CODE_OK { err := status.NewErrorFromCode(statRes.Status.GetCode(), "gateway") return status.NewInternal(ctx, err, "could not delete share reference") @@ -420,6 +421,10 @@ func (s *svc) removeReference(ctx context.Context, resourceID *provider.Resource } if deleteResp.Status.Code != rpc.Code_CODE_OK { + if deleteResp.Status.Code == rpc.Code_CODE_NOT_FOUND { + // This is fine, we wanted to delete it anyway + return status.NewOK(ctx) + } err := status.NewErrorFromCode(deleteResp.Status.GetCode(), "gateway") return status.NewInternal(ctx, err, "could not delete share reference") }