If the callback module has a socket type of independent and needs to
create the listener itself, do not pre-bind the port. The same holds if
there are errors in the listener configuration.
It may happen that auth or rdbms client tcp connections bind a local
socket to a port number required by a configered listener. The ejabberd
applications fails to start up and needs to be restarted.
In plain C you would bind(2) the listener port and listen(2) later on.
gen_tcp:listen/2 does not allow to separate these two steps though, so
another way is not to accept connections while start up. OTOH, the
kernel will syn/ack incoming connections and receive data, leaving them
in a buffer for the ejabberd to read from. If this is unwanted, a load
balancer would need to receive data from the ejabberd server before
adding the node to its pool.
This patch binds tcp ports while initializing the ejabberd_listener
process, storing ListenSockets in an ets table. start_listeners/0 will
reuse these ports later on.
IP version of listener. Support for definition of IP address in
string format, and implicit definition of IP
version (EJAB-388). Support for defining several listeners: all
with same port number but different IP addresses (EJAB-389)(thanks
to Fabrice Colliot and Sergei Golovan). Better report in WebAdmin
of problem when starting a listener. The old configuration method
of ip tuple and inet6 is fully supported for backwards
compatibility, but is not documented in the Guide anymore.
* src/ejabberd_config.erl: Likewise
* src/mod_proxy65/mod_proxy65_stream.erl: Likewise
* src/mod_proxy65/mod_proxy65_service.erl: Likewise
* src/web/ejabberd_web_admin.erl: Likewise
* doc/guide.tex: Document the new way to configure IP address and
IP version of listener, undocument options ip and inet6
* doc/guide.html: Likewise
SVN Revision: 1812
start after everything else (EJAB-303). Implement support in
ejabberd for 'independent listeners', which handle their
connections themselves: gen_tcp:listen, etc.
* src/ejabberd_listener.erl: Likewise
* src/ejabberd_socket.erl: Likewise
* src/ejabberd_sup.erl: Likewise
SVN Revision: 1631
configuration load (EJAB-461)
* src/ejabberd_listener.erl: Likewise
* src/msgs/cs.msg: Small typo (thanks to Lukas Polivka alias
Spike411)
* src/ejabberd.cfg.example: Small change in order of options
SVN Revision: 1073
* src/xml_stream.erl: Added API for managing xml streams without
creating process
* src/ejabberd_receiver.erl: Use this API, now 2 processes are
created per C2S connection
SVN Revision: 288
ports
* src/ejabberd_listener.erl: Added API for configuration of port
listeners
* src/web/ejabberd_web_admin.erl: Fixed "Stop" button on node
management page
SVN Revision: 238
* src/ejabberd_listener.erl: Now possible to specify interface on
which one socket will be listened, also added another way to
specify SSL options
* src/ejabberd.cfg.example: Updated
SVN Revision: 231
added timeout value to ssl:accept
* src/mod_vcard.erl: Added checks for all empty input fields
* src/mod_offline.erl: More strong checks for stored packets
SVN Revision: 163