Просмотр исходного кода

Fix issue #1461 - keep the retain flag for new subscription

Feng Lee 8 лет назад
Родитель
Сommit
701c632e07
1 измененных файлов с 5 добавлено и 2 удалено
  1. 5 2
      src/emqttd_protocol.erl

+ 5 - 2
src/emqttd_protocol.erl

@@ -563,8 +563,11 @@ sp(false) -> 0.
 %% The retained flag should be propagated for bridge.
 %%--------------------------------------------------------------------
 
-clean_retain(false, Msg = #mqtt_message{retain = true}) ->
-    Msg#mqtt_message{retain = false};
+clean_retain(false, Msg = #mqtt_message{retain = true, headers = Headers}) ->
+    case lists:member(retained, Headers) of
+        true  -> Msg;
+        false -> Msg#mqtt_message{retain = false}
+    end;
 clean_retain(_IsBridge, Msg) ->
     Msg.