fix panic
This commit is contained in:
parent
64a3fc4b48
commit
b9fbea279b
@ -25,6 +25,9 @@ var rateLimitBuckets = xsync.NewMapOf[*relay29.Group, *rate.Limiter]()
|
||||
|
||||
func rateLimit(ctx context.Context, event *nostr.Event) (reject bool, msg string) {
|
||||
group := state.GetGroupFromEvent(event)
|
||||
if group == nil {
|
||||
return true, "invalid group"
|
||||
}
|
||||
|
||||
bucket, _ := rateLimitBuckets.LoadOrCompute(group, func() *rate.Limiter {
|
||||
return rate.NewLimiter(rate.Every(time.Minute*2), 30)
|
||||
@ -35,6 +38,6 @@ func rateLimit(ctx context.Context, event *nostr.Event) (reject bool, msg string
|
||||
return true, "rate-limited"
|
||||
} else {
|
||||
rsv.OK()
|
||||
return
|
||||
return false, ""
|
||||
}
|
||||
}
|
||||
|
9
state.go
9
state.go
@ -132,12 +132,19 @@ func (s *State) loadGroups(ctx context.Context) {
|
||||
}
|
||||
|
||||
func (s *State) GetGroupFromEvent(event *nostr.Event) *Group {
|
||||
group, _ := s.Groups.Load(GetGroupIDFromEvent(event))
|
||||
groupID := GetGroupIDFromEvent(event)
|
||||
if groupID == "" {
|
||||
return nil
|
||||
}
|
||||
group, _ := s.Groups.Load(groupID)
|
||||
return group
|
||||
}
|
||||
|
||||
func GetGroupIDFromEvent(event *nostr.Event) string {
|
||||
gtag := event.Tags.GetFirst([]string{"h", ""})
|
||||
if gtag == nil || len(*gtag) < 2 {
|
||||
return ""
|
||||
}
|
||||
groupId := (*gtag)[1]
|
||||
return groupId
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user