Browse Source

Refactor deletion checks and error handling; bump version to v0.6.4.

main
mleku 4 months ago
parent
commit
199f922208
No known key found for this signature in database
  1. 8
      app/handle-delete.go
  2. 24
      pkg/database/query-for-deleted.go
  3. 2
      pkg/version/version

8
app/handle-delete.go

@ -145,12 +145,10 @@ func (l *Listener) HandleDelete(env *eventenvelope.Submission) (err error) {
if ev, err = l.FetchEventBySerial(s); chk.E(err) { if ev, err = l.FetchEventBySerial(s); chk.E(err) {
continue continue
} }
// check that the author is the same as the signer of the // allow deletion if the signer is the author OR an admin/owner
// delete, for the e tag case the author is the signer of if !(ownerDelete || utils.FastEqual(env.E.Pubkey, ev.Pubkey)) {
// the event.
if !utils.FastEqual(env.E.Pubkey, ev.Pubkey) {
log.W.F( log.W.F(
"HandleDelete: attempted deletion of event %s by different user - delete pubkey=%s, event pubkey=%s", "HandleDelete: attempted deletion of event %s by unauthorized user - delete pubkey=%s, event pubkey=%s",
hex.Enc(ev.ID), hex.Enc(env.E.Pubkey), hex.Enc(ev.ID), hex.Enc(env.E.Pubkey),
hex.Enc(ev.Pubkey), hex.Enc(ev.Pubkey),
) )

24
pkg/database/query-for-deleted.go

@ -173,10 +173,10 @@ func (d *D) CheckForDeleted(ev *event.E, admins [][]byte) (err error) {
} }
} }
if ev.CreatedAt < maxTs { if ev.CreatedAt < maxTs {
// err = fmt.Errorf( err = errorf.E(
// "blocked: was deleted by address %s: event is older than the delete: event: %d delete: %d", "blocked: %0x was deleted by address %s because it is older than the delete: event: %d delete: %d",
// at, ev.CreatedAt, maxTs, ev.ID, at, ev.CreatedAt, maxTs,
// ) )
return return
} }
return return
@ -203,22 +203,14 @@ func (d *D) CheckForDeleted(ev *event.E, admins [][]byte) (err error) {
return return
} }
if len(s) > 0 { if len(s) > 0 {
// For e-tag deletions (delete by ID), any deletion event means the event cannot be resubmitted // Any e-tag deletion found means the exact event was deleted and cannot be resubmitted
// regardless of timestamp, since it's a specific deletion of this exact event err = errorf.E("blocked: %0x has been deleted", ev.ID)
// err = errorf.E(
// "blocked: was deleted by ID and cannot be resubmitted",
// // ev.ID,
// )
return return
} }
} }
if len(sers) > 0 { if len(sers) > 0 {
// For e-tag deletions (delete by ID), any deletion event means the event cannot be resubmitted // Any e-tag deletion found means the exact event was deleted and cannot be resubmitted
// regardless of timestamp, since it's a specific deletion of this exact event err = errorf.E("blocked: %0x has been deleted", ev.ID)
// err = errorf.E(
// "blocked: was deleted by ID and cannot be resubmitted",
// // ev.ID,
// )
return return
} }

2
pkg/version/version

@ -1 +1 @@
v0.6.3 v0.6.4
Loading…
Cancel
Save