diff --git a/internal/proxy/subscribe_handler.go b/internal/proxy/subscribe_handler.go index d10fabea41..b01cc9b1fe 100644 --- a/internal/proxy/subscribe_handler.go +++ b/internal/proxy/subscribe_handler.go @@ -89,6 +89,7 @@ func (h *SubscribeHandler) Handle(node *centrifuge.Node) SubscribeHandlerFunc { position := chOpts.Position var info []byte + var data []byte if subscribeRep.Result != nil { if subscribeRep.Result.B64Info != "" { decodedInfo, err := base64.StdEncoding.DecodeString(subscribeRep.Result.B64Info) @@ -100,6 +101,16 @@ func (h *SubscribeHandler) Handle(node *centrifuge.Node) SubscribeHandlerFunc { } else { info = subscribeRep.Result.Info } + if subscribeRep.Result.B64Data != "" { + decodedData, err := base64.StdEncoding.DecodeString(subscribeRep.Result.B64Data) + if err != nil { + node.Log(centrifuge.NewLogEntry(centrifuge.LogLevelError, "error decoding base64 data", map[string]interface{}{"client": client.ID(), "error": err.Error()})) + return centrifuge.SubscribeReply{}, centrifuge.ErrorInternal + } + data = decodedData + } else { + data = subscribeRep.Result.Data + } result := subscribeRep.Result @@ -124,6 +135,7 @@ func (h *SubscribeHandler) Handle(node *centrifuge.Node) SubscribeHandlerFunc { JoinLeave: joinLeave, Recover: useRecover, Position: position, + Data: data, }, ClientSideRefresh: true, }, nil