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:
parent
6ad3b2e802
commit
d2fa768151
2 changed files with 47 additions and 3 deletions
server
|
@ -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,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue