@@ -53,7 +53,6 @@ import (
|
||||
func (a *A) HandleEvent(
|
||||
c context.T, req []byte, srv server.I,
|
||||
) (msg []byte) {
|
||||
|
||||
var err error
|
||||
log.T.C(
|
||||
func() string {
|
||||
@@ -165,8 +164,7 @@ func (a *A) HandleEvent(
|
||||
}
|
||||
return
|
||||
}
|
||||
var ok bool
|
||||
if ok, err = env.Verify(); chk.T(err) {
|
||||
if ok, err := env.Verify(); chk.T(err) {
|
||||
if err = Ok.Error(
|
||||
a, env, fmt.Sprintf(
|
||||
"failed to verify signature: %s",
|
||||
@@ -447,47 +445,48 @@ func (a *A) HandleEvent(
|
||||
)
|
||||
res = nil
|
||||
}
|
||||
// Send a success response after processing all deletions
|
||||
if err = Ok.Ok(a, env, ""); chk.E(err) {
|
||||
return
|
||||
}
|
||||
// Check if this event has been deleted before
|
||||
if env.E.Kind.K != kind.Deletion.K {
|
||||
// Create a filter to check for deletion events that reference this
|
||||
// event ID
|
||||
f := filter.New()
|
||||
f.Kinds.K = []*kind.T{kind.Deletion}
|
||||
f.Tags.AppendTags(tag.New([]byte{'e'}, env.E.ID))
|
||||
|
||||
// Query for deletion events
|
||||
var deletionEvents []*event.E
|
||||
deletionEvents, err = sto.QueryEvents(c, f)
|
||||
if err == nil && len(deletionEvents) > 0 {
|
||||
// Found deletion events for this ID, don't save it
|
||||
if err = Ok.Blocked(
|
||||
a, env, "the event was deleted, not storing it again",
|
||||
); chk.E(err) {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
var reason []byte
|
||||
ok, reason = srv.AddEvent(c, rl, env.E, a.Req(), a.RealRemote(), nil)
|
||||
log.T.C(
|
||||
func() string {
|
||||
return fmt.Sprintf(
|
||||
"event %0x added %v %s", env.E.ID, ok, reason,
|
||||
)
|
||||
},
|
||||
)
|
||||
if err = okenvelope.NewFrom(
|
||||
env.E.ID, ok,
|
||||
).Write(a.Listener); chk.E(err) {
|
||||
// Send a success response after processing all deletions
|
||||
if err = Ok.Ok(a, env, ""); chk.E(err) {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
// Check if this event has been deleted before
|
||||
if env.E.Kind.K != kind.Deletion.K {
|
||||
// Create a filter to check for deletion events that reference this
|
||||
// event ID
|
||||
f := filter.New()
|
||||
f.Kinds.K = []*kind.T{kind.Deletion}
|
||||
f.Tags.AppendTags(tag.New([]byte{'e'}, env.E.ID))
|
||||
|
||||
// Query for deletion events
|
||||
var deletionEvents []*event.E
|
||||
deletionEvents, err = sto.QueryEvents(c, f)
|
||||
if err == nil && len(deletionEvents) > 0 {
|
||||
// Found deletion events for this ID, don't save it
|
||||
if err = Ok.Blocked(
|
||||
a, env, "the event was deleted, not storing it again",
|
||||
); chk.E(err) {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
var ok bool
|
||||
var reason []byte
|
||||
ok, reason = srv.AddEvent(c, rl, env.E, a.Req(), a.RealRemote(), nil)
|
||||
log.T.C(
|
||||
func() string {
|
||||
return fmt.Sprintf(
|
||||
"event %0x added %v %s", env.E.ID, ok, reason,
|
||||
)
|
||||
},
|
||||
)
|
||||
if err = okenvelope.NewFrom(
|
||||
env.E.ID, ok,
|
||||
).Write(a.Listener); chk.E(err) {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@@ -43,9 +43,9 @@ func (a *A) HandleMessage(msg, authedPubkey []byte) {
|
||||
}
|
||||
switch t {
|
||||
case eventenvelope.L:
|
||||
notice = a.HandleEvent(a.Context(), rem, a.I)
|
||||
notice = a.HandleEvent(a.Ctx, rem, a.I)
|
||||
case reqenvelope.L:
|
||||
notice = a.HandleReq(a.Context(), rem, a.I)
|
||||
notice = a.HandleReq(a.Ctx, rem, a.I)
|
||||
case closeenvelope.L:
|
||||
notice = a.HandleClose(rem, a.I)
|
||||
case authenvelope.L:
|
||||
|
||||
@@ -367,7 +367,8 @@ func (r *Client) ConnectWithTLS(
|
||||
if env, rem, err = okenvelope.Parse(rem); chk.E(err) {
|
||||
continue
|
||||
}
|
||||
if okCallback, exist := r.okCallbacks.Load(env.EventID.String()); exist {
|
||||
eventIDStr := env.EventID.String()
|
||||
if okCallback, exist := r.okCallbacks.Load(eventIDStr); exist {
|
||||
okCallback(env.OK, string(env.Reason))
|
||||
} else {
|
||||
log.T.C(
|
||||
@@ -375,7 +376,7 @@ func (r *Client) ConnectWithTLS(
|
||||
return fmt.Sprintf(
|
||||
"{%s} got an unexpected OK message for event %s",
|
||||
r.URL,
|
||||
env.EventID,
|
||||
eventIDStr,
|
||||
)
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user