Topic: xmlns et routage des messages

Hello,

comme mes fans les plus fidèles le savent ( oui,je vous aimes tous, etc etc ),j'ai écrit un composant du nom de muc_proxy durant un après midi ensoleillé d'été ( cf http://forum.jabberfr.org/viewtopic.php?id=860 ). Pour faire court, j'ai voulu redeployer le composant sur djabberd, et j'ai vu que ça ne marchait pas.
Après avoir cherché durant quelques jours, j'ai trouvé le noeud du problème :
le composant utilise des messages ayant comme namespace 'jabber:client', et ça, c'était pas bon.
J'ai donc corrigé ça sauf à un endroit, la requête vers le serveur muc pour avoir la liste des salons.
Je me retrouve donc à avoir un composant qui fait une requête iq avec un namespace jabber:iq:client, et que djabberd refuse de router, sans patch de ma part.

Et si je mets le namespace à jabber:accept:component, c'est le composant muc qui ne réponds pas.

Du coup, la question est la suivante : quel est la solution la plus conforme aux standards ?

dire à djabberd de router tout le xml que le composant envoie, et de faire fi des vérifications ?
dire à mu-conf que les messages de type jabber:accept:component sont aussi valides et qu'il faut les aimer aussi ?
faire une modification du xml quand il passe dans djabberd pour que ça devienne un paquet de type jabber:client si il est routé en s2s ?
ouvrir une connexion client du composant sur le serveur pour faire la requete, avec un jid et tout ça ?

Perso, je pense que rendre djabberd moins strict est le plus simple, mais nulle part n'est spécifié le comportement à tenir à ce niveau.

Re: xmlns et routage des messages

Bizarre ton truc. Si j'ai bien tout compris le coup des namespaces XMPP, c'est que les namespaces sont des namespaces de flux, et donc devraient changer quand le flux change, donc en gros tu devrais envoyer avec jabber:component:accept comme namespace depuis ton composant, et quand ça change de lien ça devrait convertir comme il faut, donc il devrait pas y avoir à s'en soucier.

Est-ce que tu peux coller un exemple de paquet envoyé par muc_proxy et reçu par un serveur de muc ?

Re: xmlns et routage des messages

Ben ça depend, soit j'envoie un <iq xmlns='jabber:component:accept' to='chat.jabberfr.org' from ='composant.example.org'><query ...></iq> et je pense que mu-conf ne réponds pas à ça ( une requete de discoversy )

Soit je fait le même avec un xmlns à 'jabber:client' et djabberd me jette parce que j'ai pas le bon namespace.

Quand je rends djabberd moins strict, tout marche comme sur des roulettes ( comme sur ejabberd ).

Le paquet est jamais modifié par le serveur.

Re: xmlns et routage des messages

Et si tu mets pas de namespace à ton paquet ? Normalement le namespace est fixé par le parent (la balise <stream>), donc il devrait pas être répété dans le <iq>. Le namespace devrait donc changer quand on change de flux.