Skip to content

Commit a1539d0

Browse files
committed
Don't cache signatures
1 parent e066fba commit a1539d0

File tree

2 files changed

+18
-28
lines changed

2 files changed

+18
-28
lines changed

policyeval/policyserver.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import (
1717

1818
type psCacheEntry struct {
1919
Recommendation PSRecommendation
20-
Signatures map[string]map[string]string
2120
LastAccessed time.Time
2221
PDU *event.Event
2322
Lock sync.Mutex

policyeval/policyserver_sign.go

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ package policyeval
55
import (
66
"context"
77
"errors"
8-
"time"
98

109
"github.com/rs/zerolog"
1110
"maunium.net/go/mautrix/event"
@@ -27,11 +26,8 @@ func (ps *PolicyServer) HandleSign(
2726
Stringer("room_id", clientEvt.RoomID).
2827
Stringer("event_id", clientEvt.ID).
2928
Logger()
30-
r := ps.getCache(clientEvt.ID, clientEvt)
31-
finalRec := r.Recommendation
32-
r.Lock.Lock()
29+
finalRec := PSRecommendationOk
3330
defer func() {
34-
r.Lock.Unlock()
3531
if caller != evt.Sender.Homeserver() && finalRec == PSRecommendationSpam && redact && ps.redactionCache.Add(clientEvt.ID) {
3632
go func() {
3733
if _, err = evaluator.Bot.RedactEvent(context.WithoutCancel(ctx), clientEvt.RoomID, clientEvt.ID); err != nil {
@@ -41,30 +37,25 @@ func (ps *PolicyServer) HandleSign(
4137
}
4238
}()
4339

44-
if r.Signatures == nil {
45-
log.Trace().Any("event", evt).Msg("Checking event received by policy server")
46-
rec, match := ps.getRecommendation(clientEvt, evaluator)
47-
finalRec = rec
48-
r.Recommendation = finalRec
49-
if rec == PSRecommendationSpam {
50-
// Don't sign spam events
51-
log.Debug().Stringer("recommendations", match.Recommendations()).Msg("Event rejected for spam")
52-
signatures = make(map[string]map[string]string) // empty but not nil map to prevent later rechecks
53-
} else {
54-
log.Trace().Msg("Event accepted")
40+
log.Trace().Any("event", evt).Msg("Checking event received by policy server")
41+
rec, match := ps.getRecommendation(clientEvt, evaluator)
42+
finalRec = rec
43+
if rec == PSRecommendationSpam {
44+
// Don't sign spam events
45+
log.Debug().Stringer("recommendations", match.Recommendations()).Msg("Event rejected for spam")
46+
} else {
47+
log.Trace().Msg("Event accepted")
5548

56-
var signature string
57-
signature, err = ps.SigningKey.SignJSON(evt)
58-
if err != nil {
59-
return
60-
}
61-
signatures = map[string]map[string]string{
62-
ps.Federation.ServerName: {
63-
"ed25519:policy_server": signature,
64-
},
65-
}
49+
var signature string
50+
signature, err = ps.SigningKey.SignJSON(evt)
51+
if err != nil {
52+
return
53+
}
54+
signatures = map[string]map[string]string{
55+
ps.Federation.ServerName: {
56+
"ed25519:policy_server": signature,
57+
},
6658
}
6759
}
68-
r.LastAccessed = time.Now()
6960
return signatures, nil
7061
}

0 commit comments

Comments
 (0)