2016-03-07 15 views
0

多點傳送服務未向所有地址節的收件人傳送所有「至」屬性。mod_multicast未向接收方傳送正確的地址段

用戶A發送一個數據包到用戶B和用戶C

<message type="chat" to="multicast.example.com" id=""> 
    <addresses xmlns="http://jabber.org/protocol/address"> 
    <address type="to" jid="[email protected]"/> 
    <address type="to" jid="[email protected]"/> 
    </addresses> 
    <body>One</body> 
    <active xmlns="http://jabber.org/protocol/chatstates"/> 
</message> 

但是用戶B接收

<message xmlns="jabber:client" from="[email protected]/iPhone" to="[email protected]" type="chat" id=""> 
    <addresses xmlns="http://jabber.org/protocol/address"> 
    <address type="to" jid="[email protected]"/> 
    </addresses> 
    <body>One</body> 
    <active xmlns="http://jabber.org/protocol/chatstates"/> 
</message> 

與用戶C接收

<message xmlns="jabber:client" from="[email protected]/iPhone" to="[email protected]" type="chat" id=""> 
    <addresses xmlns="http://jabber.org/protocol/address"> 
    <address type="to" jid="[email protected]"/> 
    </addresses> 
    <body>One</body> 
    <active xmlns="http://jabber.org/protocol/chatstates"/> 
</message> 

因此,用戶B和用戶C缺少'到'屬性爲地址節中的彼此。

我用ejabberd 16.01和我用https://docs.ejabberd.im/admin/guide/configuration/#modmulticast配置

回答

1

嘗試這種變化。這很奇怪,因爲多年前這些線條並沒有改變。也許bug是別的地方,而這僅僅是一個解決辦法:

--- a/src/mod_multicast.erl 
+++ b/src/mod_multicast.erl 
@@ -599,7 +599,7 @@ add_addresses(Delivereds, Groups) -> 
add_addresses2(_, [], Res, _, []) -> Res; 
add_addresses2(Delivereds, [Group | Groups], Res, Pa, 
       [Pi | Pz]) -> 
- Addresses = lists:append([Delivereds] ++ Pa ++ Pz), 
+ Addresses = lists:append([Delivereds] ++ Pa ++ [Pi] ++ Pz), 
    Group2 = Group#group{addresses = Addresses}, 
    add_addresses2(Delivereds, Groups, [Group2 | Res], 
        [Pi | Pa], Pz). 
@@ -655,7 +655,7 @@ route_packet_multicast(From, ToS, Packet, AAttrs, Dests, 
route_packet2(From, ToS, Dests, Packet, AAttrs, 
       Addresses) -> 
    #xmlel{name = T, attrs = A, children = C} = Packet, 
- C2 = case append_dests(Dests, Addresses) of 
+ C2 = case Addresses of 
      [] -> C; 
      ACs -> 
       [#xmlel{name = <<"addresses">>, attrs = AAttrs, 
+0

ok..I現在測試的接受者得到所有「到」共交付= TRUE屬性一起.......你看我可以在生產中使用此修復程序? – GJain

+0

您可以在生產中使用它,而不會造成崩潰。我只是對這段代碼感到驚訝,因爲它顯然不符合協議,並且協議在幾年內沒有改變,我們的代碼也沒有改變。所以,在提交之前我需要再看一次。 – Badlop

+0

再次嗨!經過更多測試後,我不喜歡之前提供的補丁。這是更好的,所以它包含在下一個版本的ejabberd git中:https://github.com/processone/ejabberd/commit/5351e8236d34b72b0498c98da53587bdd6245c09 – Badlop

相關問題