From fbb2b84f12dacc5c7be06fc6d73af45a0e29d201 Mon Sep 17 00:00:00 2001 From: ChronosX88 Date: Fri, 13 Sep 2019 09:30:10 +0400 Subject: [PATCH 1/2] fix: Disable subscription to service topic (from public API), GetTopics now returns a list of *user* topics, add canceling subscription when user unsubscribed from topic --- pkg/main.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pkg/main.go b/pkg/main.go index d0a5210..f28e7ba 100644 --- a/pkg/main.go +++ b/pkg/main.go @@ -57,6 +57,7 @@ func readSub(subscription *pubsub.Subscription, incomingMessagesChan chan pubsub { close(incomingMessagesChan) close(stopChannel) + subscription.Cancel() return } default: @@ -256,7 +257,10 @@ func GetPeersIdentity() { // GetTopics is method for getting subcribed topics of current peer func GetTopics() string { - topics := handler.GetTopics() + var topics []string + for key := range subscribedTopics { + topics = append(topics, key) + } return utils.ObjectToJSON(topics) } @@ -287,6 +291,10 @@ func GetMessages() string { // SubscribeToTopic allows to subscribe to specific topic func SubscribeToTopic(topic string) { + if topic == serviceTopic { + log.Println("Manual subscription to service topic is not allowed!") + return + } incomingMessages := make(chan pubsub.Message) subscription, err := Pb.Subscribe(topic) if err != nil { From 185ef48dabdcb171e337d0e0fa0e42168bdcd07e Mon Sep 17 00:00:00 2001 From: ChronosX88 Date: Fri, 13 Sep 2019 09:35:44 +0400 Subject: [PATCH 2/2] fix: Disable multiple subscription to the same topic --- pkg/main.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/main.go b/pkg/main.go index f28e7ba..810896f 100644 --- a/pkg/main.go +++ b/pkg/main.go @@ -295,6 +295,10 @@ func SubscribeToTopic(topic string) { log.Println("Manual subscription to service topic is not allowed!") return } + if _, ok := subscribedTopics[topic]; ok { + log.Println("You are already subscribed to the topic!") + return + } incomingMessages := make(chan pubsub.Message) subscription, err := Pb.Subscribe(topic) if err != nil {