From 0348d0eed996545e6f0205abfaa4f40874d0b090 Mon Sep 17 00:00:00 2001 From: Asim Date: Sat, 25 Jun 2016 03:15:42 +0100 Subject: [PATCH] Concurrent use of message and we modify it, bad practice, copy it --- broker/http_broker.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/broker/http_broker.go b/broker/http_broker.go index 75a749cb..eca52d51 100644 --- a/broker/http_broker.go +++ b/broker/http_broker.go @@ -288,7 +288,6 @@ func (h *httpBroker) ServeHTTP(w http.ResponseWriter, req *http.Request) { id := req.Form.Get("id") h.RLock() - for _, subscriber := range h.subscribers[topic] { if id == subscriber.id { // sub is sync; crufty rate limiting @@ -340,12 +339,18 @@ func (h *httpBroker) Publish(topic string, msg *Message, opts ...PublishOption) return err } - if msg.Header == nil { - msg.Header = map[string]string{} + m := &Message{ + Header: make(map[string]string), + Body: msg.Body, } - msg.Header[":topic"] = topic - b, err := json.Marshal(msg) + for k, v := range msg.Header { + m.Header[k] = v + } + + m.Header[":topic"] = topic + + b, err := json.Marshal(m) if err != nil { return err }