1
0
Fork 0
mirror of https://github.com/binwiederhier/ntfy.git synced 2025-06-09 14:34:36 +02:00

fix: removes an issue with topic.Subscribe function not checking duplicate ID

This commit is contained in:
Rahul Tyagi 2023-05-02 21:40:27 +05:30
parent 6ad3b2e802
commit d2fa768151
2 changed files with 47 additions and 3 deletions
server

View file

@ -1,11 +1,12 @@
package server
import (
"heckel.io/ntfy/log"
"heckel.io/ntfy/util"
"math/rand"
"sync"
"time"
"heckel.io/ntfy/log"
"heckel.io/ntfy/util"
)
const (
@ -45,9 +46,23 @@ func newTopic(id string) *topic {
// Subscribe subscribes to this topic
func (t *topic) Subscribe(s subscriber, userID string, cancel func()) int {
max_retries := 5
retries := 1
t.mu.Lock()
defer t.mu.Unlock()
subscriberID := rand.Int()
// simple check for existing id in maps
for {
_, ok := t.subscribers[subscriberID]
if ok && retries <= max_retries {
subscriberID = rand.Int()
retries++
} else {
break
}
}
t.subscribers[subscriberID] = &topicSubscriber{
userID: userID, // May be empty
subscriber: s,