Error
ejabberd works correctly. I installed a transport, it seems to work correctly. The problem is that ejabberd does not show the transport on Service Discovery.
This is a part of my ejabberd.cfg:
{hosts, ["jabber.example.org"]}. {listen, [ ... {5237, ejabberd_service, [{host, "pymsnt.example.org", [{password, "secret"}]}]}, ... ]}.
Explanation
The JID of the transport is not a subdomain of the Jabber server JID. The transport is not shown on the Jabber server discovery because ejabberd doesn't know that transport is meant to be shown for that Jabber server.
Solution
There are two possible solutions:
- Configure the transport to be a subdomain of the Jabber server, for example msn.jabber.example.org. To do this, modify both ejabberd.cfg and the configuration file of your transport. This way, when the transport is running ejabberd will show it on Service Discovery, and will hide it if the transport is stopped.
- Or force ejabberd to show pymsnt.example.org on the service discovery. Consult the ejabberd guide for details, the option you want to use is 'extra_domains' on 'mod_disco'. Please note that if you force ejabberd to show a service, ejabberd will show it always, even if the service is unavailable.
Note that, even if the transport is not shown in the list of services of the server, users can still access and use it: put the transport JabberID in the client's Service Discovery window.
It works!!!
Thank you very much for the help! It explained very clear on my problem and it worked when I tried it.