Преглед изворни кода

fix issue #297 - support variable

Feng пре 10 година
родитељ
комит
74d0ef9a95
1 измењених фајлова са 10 додато и 2 уклоњено
  1. 10 2
      src/emqttd_mod_autosub.erl

+ 10 - 2
src/emqttd_mod_autosub.erl

@@ -45,8 +45,16 @@ load(Opts) ->
                        {?MODULE, client_connected, [Topics]}),
                        {?MODULE, client_connected, [Topics]}),
     {ok, #state{topics = 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]);
     emqttd_client:subscribe(ClientPid, [{F(Topic), Qos} || {Topic, Qos} <- Topics]);
 
 
 client_connected(_ConnAck, _Client, _Topics) ->
 client_connected(_ConnAck, _Client, _Topics) ->