fix panic

This commit is contained in:
water783 2024-07-22 15:20:48 +08:00
parent 64a3fc4b48
commit b9fbea279b
2 changed files with 12 additions and 2 deletions

View File

@ -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, ""
}
}

View File

@ -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
}