diff --git a/lib/message_bus.rb b/lib/message_bus.rb index cb927a5c..fa0b1324 100644 --- a/lib/message_bus.rb +++ b/lib/message_bus.rb @@ -625,6 +625,7 @@ def client_message_filters private ENCODE_SITE_TOKEN = "$|$" + ENCODE_SITE_TOKEN_SIZE = ENCODE_SITE_TOKEN.bytesize # encode channel name to include site def encode_channel_name(channel, site_id = nil) @@ -638,7 +639,14 @@ def encode_channel_name(channel, site_id = nil) end def decode_channel_name(channel) - channel.split(ENCODE_SITE_TOKEN) + if (idx = channel.byteindex(ENCODE_SITE_TOKEN)) + [ + channel.byteslice(0, idx), + channel.byteslice(idx + ENCODE_SITE_TOKEN_SIZE, channel.bytesize - idx - ENCODE_SITE_TOKEN_SIZE) + ] + else + [channel, nil] + end end def global?(channel)