Go to file
Andreas Köhler 1f1d2bd5f5 Bind listener ports early and start accepting connections later
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.
2010-11-10 23:46:16 +01:00
contrib Remove references to the old SVN repository. 2010-02-16 11:55:01 +01:00
doc New ip_access option restricts which IPs can register (thanks to Alexey Shchepin)(EJAB-915) 2010-11-05 19:33:52 +01:00
examples Optionally cache extauth users in mnesia (EJAB-641) 2010-05-10 16:42:54 +02:00
src Bind listener ports early and start accepting connections later 2010-11-10 23:46:16 +01:00
tools remove outdated and useless file, use ejabberdctl.template instead 2010-06-16 12:20:08 +02:00
.gitignore Rename aclocal.m4 to acinclude.m4 (thanks to Andreas Köhler) 2010-10-15 16:29:47 +02:00
COPYING * src/msgs/nl.msg: Updated (thanks to Sander Devrieze) 2004-10-09 20:15:49 +00:00
README Requirement of OpenSSL increased from 0.9.6 to 0.9.8 2010-07-01 17:01:13 +02:00

README

ejabberd - High-Performance Enterprise Instant Messaging Server 

Quickstart guide


0. Requirements

To compile ejabberd you need:
 - GNU Make
 - GCC
 - Libexpat 1.95 or higher
 - Erlang/OTP R10B-9 or higher. Recommended versions: R12B-5 and R13B04
 - OpenSSL 0.9.8 or higher, for STARTTLS, SASL and SSL encryption.
 - Zlib 1.2.3 or higher, for Stream Compression support
   (XEP-0138). Optional.
 - Erlang mysql library. Optional. MySQL authentication/storage.
 - Erlang pgsql library. Optional. PostgreSQL authentication/storage.
 - PAM library. Optional. For Pluggable Authentication Modules (PAM).
 - GNU Iconv 1.8 or higher, for the IRC Transport
   (mod_irc). Optional. Not needed on systems with GNU Libc.
 - ImageMagick's Convert program. Optional. For CAPTCHA challenges.
 - exmpp 0.9.2 or higher. Optional. For import/export XEP-0227 files. 


1. Compile and install on *nix systems

To compile ejabberd, go to the directory src/ and execute the commands:
  ./configure
  make

To install ejabberd, run this command with system administrator rights
(root user):

  sudo make install

These commands will:
 - Install the configuration files in /etc/ejabberd/
 - Install ejabberd binary, header and runtime files in /lib/ejabberd/
 - Install the administration script: /sbin/ejabberdctl
 - Install ejabberd documentation in /share/doc/ejabberd/
 - Create a spool directory: /var/lib/ejabberd/
 - Create a directory for log files: /var/log/ejabberd/


2. Start ejabberd

You can use the ejabberdctl command line administration script to
start and stop ejabberd. For example:
  ejabberdctl start


For detailed information please refer to the
ejabberd Installation and Operation Guide