diff --git a/ChangeLog b/ChangeLog index c3562c717..42971543c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-02-17 Badlop + + * src/ejabberd_listener.erl: More error detections + 2009-02-16 Badlop * src/ejabberd_config.erl: Check certfiles are readable on server diff --git a/src/ejabberd_listener.erl b/src/ejabberd_listener.erl index df3e343d8..56df6d4cd 100644 --- a/src/ejabberd_listener.erl +++ b/src/ejabberd_listener.erl @@ -124,6 +124,7 @@ init(PortIP, Module, Opts1) -> {error, Reason} -> ReasonT = case Reason of eaddrnotavail -> "IP address not available: " ++ IPS; + eaddrinuse -> "IP address and port number already used: "++IPS++" "++integer_to_list(Port); _ -> atom_to_list(Reason) end, ?ERROR_MSG("Failed to open socket:~n ~p~nReason: ~s", @@ -225,6 +226,12 @@ start_listener(Port, Module, Opts) -> "It could not be loaded or is not an ejabberd listener.~n" "Error: ~p~n", [Module, Error]), {error, lists:flatten(EStr)}; + {error, {already_started, _Pid} = Error} -> + EStr = io_lib:format( + "Error starting the ejabberd listener: ~p.~n" + "A listener is already started in that port number and IP address:~n~p~n" + "Error: ~p~n", [Module, Port, Error]), + {error, lists:flatten(EStr)}; {error, Error} -> {error, Error} end.