You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Lauri (JIRA)" <ji...@apache.org> on 2016/06/16 16:00:08 UTC

[jira] [Updated] (VYSPER-351) NonAnonymous and SemiAnonymous rooms do not expose real jid on room join

     [ https://issues.apache.org/jira/browse/VYSPER-351?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Lauri updated VYSPER-351:
-------------------------
    Description: 
This affects fetching vcard of a user in MUC.

Suggested patch ( http://pastebin.com/2nMQ2Cbe ):

{code:title=MUCPresenceHandler.java|borderStyle=solid}

# This patch file was generated by NetBeans IDE
# It uses platform neutral UTF-8 encoding and \n newlines.
--- a/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
+++ b/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
@@ -264,8 +264,9 @@
             }
             
             // relay presence of all existing room occupants to the now joined occupant
+            boolean includeJid = includeJidInItem(room, newOccupant);
             for (Occupant existingOccupant : room.getOccupants()) {
-                sendOccupantPresenceToNewOccupant(newOccupant, existingOccupant, room, serverRuntimeContext);
+                sendOccupantPresenceToNewOccupant(newOccupant, existingOccupant, room, serverRuntimeContext, includeJid);
             }
 
             // relay presence of the newly added occupant to all existing occupants
@@ -277,7 +278,6 @@
             room.updateLastActivity();
             
             // send discussion history to user
-            boolean includeJid = room.isRoomType(RoomType.NonAnonymous);
             List<Stanza> history = room.getHistory().createStanzas(newOccupant, includeJid, History.fromStanza(stanza));
             relayStanzas(newOccupantJid, history, serverRuntimeContext);
 
@@ -327,12 +327,12 @@
     }
 
     private void sendOccupantPresenceToNewOccupant(Occupant newOccupant, Occupant existingOccupant, Room room,
-                                                   ServerRuntimeContext serverRuntimeContext) {
+            ServerRuntimeContext serverRuntimeContext, boolean includeJid) {
         //            <presence
         //            from='darkcave@chat.shakespeare.lit/firstwitch'
         //            to='hag66@shakespeare.lit/pda'>
         //          <x xmlns='http://jabber.org/protocol/muc#user'>
-        //            <item affiliation='owner' role='moderator'/>
+        //            <item affiliation='owner' role='moderator' jid='hag66@shakespeare.lit/pda'/>
         //          </x>
         //        </presence>
 
@@ -344,7 +344,7 @@
         final PresenceStanza latestPresence = room.getLatestPresence(existingOccupant.getJid());
 
         Entity roomAndOccupantNick = new EntityImpl(room.getJID(), existingOccupant.getNick());
-        final MucUserItem mucUserItem = new MucUserItem(existingOccupant.getAffiliation(), existingOccupant.getRole());
+        final MucUserItem mucUserItem = new MucUserItem(existingOccupant, includeJid, true);
         
         Stanza presenceToNewOccupant = createPresenceStanzaFromLatest(roomAndOccupantNick, newOccupant.getJid(),
                 null, null, latestPresence, NamespaceURIs.XEP0045_MUC_USER, mucUserItem);
{code}

  was:
This affects fetching vcard of a user in MUC.

Suggested patch (http://pastebin.com/2nMQ2Cbe):

{code:title=MUCPresenceHandler.java|borderStyle=solid}

# This patch file was generated by NetBeans IDE
# It uses platform neutral UTF-8 encoding and \n newlines.
--- a/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
+++ b/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
@@ -264,8 +264,9 @@
             }
             
             // relay presence of all existing room occupants to the now joined occupant
+            boolean includeJid = includeJidInItem(room, newOccupant);
             for (Occupant existingOccupant : room.getOccupants()) {
-                sendOccupantPresenceToNewOccupant(newOccupant, existingOccupant, room, serverRuntimeContext);
+                sendOccupantPresenceToNewOccupant(newOccupant, existingOccupant, room, serverRuntimeContext, includeJid);
             }
 
             // relay presence of the newly added occupant to all existing occupants
@@ -277,7 +278,6 @@
             room.updateLastActivity();
             
             // send discussion history to user
-            boolean includeJid = room.isRoomType(RoomType.NonAnonymous);
             List<Stanza> history = room.getHistory().createStanzas(newOccupant, includeJid, History.fromStanza(stanza));
             relayStanzas(newOccupantJid, history, serverRuntimeContext);
 
@@ -327,12 +327,12 @@
     }
 
     private void sendOccupantPresenceToNewOccupant(Occupant newOccupant, Occupant existingOccupant, Room room,
-                                                   ServerRuntimeContext serverRuntimeContext) {
+            ServerRuntimeContext serverRuntimeContext, boolean includeJid) {
         //            <presence
         //            from='darkcave@chat.shakespeare.lit/firstwitch'
         //            to='hag66@shakespeare.lit/pda'>
         //          <x xmlns='http://jabber.org/protocol/muc#user'>
-        //            <item affiliation='owner' role='moderator'/>
+        //            <item affiliation='owner' role='moderator' jid='hag66@shakespeare.lit/pda'/>
         //          </x>
         //        </presence>
 
@@ -344,7 +344,7 @@
         final PresenceStanza latestPresence = room.getLatestPresence(existingOccupant.getJid());
 
         Entity roomAndOccupantNick = new EntityImpl(room.getJID(), existingOccupant.getNick());
-        final MucUserItem mucUserItem = new MucUserItem(existingOccupant.getAffiliation(), existingOccupant.getRole());
+        final MucUserItem mucUserItem = new MucUserItem(existingOccupant, includeJid, true);
         
         Stanza presenceToNewOccupant = createPresenceStanzaFromLatest(roomAndOccupantNick, newOccupant.getJid(),
                 null, null, latestPresence, NamespaceURIs.XEP0045_MUC_USER, mucUserItem);
{code}


> NonAnonymous and SemiAnonymous rooms do not expose real jid on room join
> ------------------------------------------------------------------------
>
>                 Key: VYSPER-351
>                 URL: https://issues.apache.org/jira/browse/VYSPER-351
>             Project: VYSPER
>          Issue Type: Bug
>          Components: XEP-0045 MUC
>    Affects Versions: 0.7, 0.8
>            Reporter: Lauri
>            Priority: Critical
>              Labels: patch
>
> This affects fetching vcard of a user in MUC.
> Suggested patch ( http://pastebin.com/2nMQ2Cbe ):
> {code:title=MUCPresenceHandler.java|borderStyle=solid}
> # This patch file was generated by NetBeans IDE
> # It uses platform neutral UTF-8 encoding and \n newlines.
> --- a/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
> +++ b/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
> @@ -264,8 +264,9 @@
>              }
>              
>              // relay presence of all existing room occupants to the now joined occupant
> +            boolean includeJid = includeJidInItem(room, newOccupant);
>              for (Occupant existingOccupant : room.getOccupants()) {
> -                sendOccupantPresenceToNewOccupant(newOccupant, existingOccupant, room, serverRuntimeContext);
> +                sendOccupantPresenceToNewOccupant(newOccupant, existingOccupant, room, serverRuntimeContext, includeJid);
>              }
>  
>              // relay presence of the newly added occupant to all existing occupants
> @@ -277,7 +278,6 @@
>              room.updateLastActivity();
>              
>              // send discussion history to user
> -            boolean includeJid = room.isRoomType(RoomType.NonAnonymous);
>              List<Stanza> history = room.getHistory().createStanzas(newOccupant, includeJid, History.fromStanza(stanza));
>              relayStanzas(newOccupantJid, history, serverRuntimeContext);
>  
> @@ -327,12 +327,12 @@
>      }
>  
>      private void sendOccupantPresenceToNewOccupant(Occupant newOccupant, Occupant existingOccupant, Room room,
> -                                                   ServerRuntimeContext serverRuntimeContext) {
> +            ServerRuntimeContext serverRuntimeContext, boolean includeJid) {
>          //            <presence
>          //            from='darkcave@chat.shakespeare.lit/firstwitch'
>          //            to='hag66@shakespeare.lit/pda'>
>          //          <x xmlns='http://jabber.org/protocol/muc#user'>
> -        //            <item affiliation='owner' role='moderator'/>
> +        //            <item affiliation='owner' role='moderator' jid='hag66@shakespeare.lit/pda'/>
>          //          </x>
>          //        </presence>
>  
> @@ -344,7 +344,7 @@
>          final PresenceStanza latestPresence = room.getLatestPresence(existingOccupant.getJid());
>  
>          Entity roomAndOccupantNick = new EntityImpl(room.getJID(), existingOccupant.getNick());
> -        final MucUserItem mucUserItem = new MucUserItem(existingOccupant.getAffiliation(), existingOccupant.getRole());
> +        final MucUserItem mucUserItem = new MucUserItem(existingOccupant, includeJid, true);
>          
>          Stanza presenceToNewOccupant = createPresenceStanzaFromLatest(roomAndOccupantNick, newOccupant.getJid(),
>                  null, null, latestPresence, NamespaceURIs.XEP0045_MUC_USER, mucUserItem);
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)