diff --git a/src/emqttd_mod_autosub.erl b/src/emqttd_mod_autosub.erl index 7285920e6..a1c8d1649 100644 --- a/src/emqttd_mod_autosub.erl +++ b/src/emqttd_mod_autosub.erl @@ -45,8 +45,16 @@ load(Opts) -> {?MODULE, client_connected, [Topics]}), {ok, #state{topics = Topics}}. -client_connected(?CONNACK_ACCEPT, #mqtt_client{client_id = ClientId, client_pid = ClientPid}, Topics) -> - F = fun(Topic) -> emqttd_topic:feed_var(<<"$c">>, ClientId, Topic) end, +client_connected(?CONNACK_ACCEPT, #mqtt_client{client_id = ClientId, + client_pid = ClientPid, + username = Username}, Topics) -> + F = fun(Topic) -> + Topic1 = emqttd_topic:feed_var(<<"$c">>, ClientId, Topic), + if + Username =:= undefined -> Topic1; + true -> emqttd_topic:feed_var(<<"$u">>, Username, Topic1) + end + end, emqttd_client:subscribe(ClientPid, [{F(Topic), Qos} || {Topic, Qos} <- Topics]); client_connected(_ConnAck, _Client, _Topics) ->