[ejabberd] Cherry-picked three new patches from upstream trunk

Peter Lemenkov peter at fedoraproject.org
Mon Sep 10 19:18:54 UTC 2012


commit bf0dc18ab8692273cb452342b2edde6001c7d1fa
Author: Fedora Build <lemenkov at gmail.com>
Date:   Mon Sep 10 23:18:41 2012 +0400

    Cherry-picked three new patches from upstream trunk
    
    Signed-off-by: Fedora Build <lemenkov at gmail.com>

 ...-service-example-name-to-match-actual-one.patch |    6 +-
 ...berd-0002-Fixed-delays-in-s2s-connections.patch |    8 +-
 ejabberd-0003-Introducing-mod_admin_extra.patch    |    4 +-
 ...04-Fedora-specific-changes-to-ejabberdctl.patch |    6 +-
 ...Install-.so-objects-with-0755-permissions.patch |    6 +-
 ...-Use-versioned-directory-for-storing-docs.patch |    6 +-
 ...L-GSSAPI-authentication-thanks-to-Mikael-.patch |   22 ++++----
 ...08-Disable-INET_DIST_INTERFACE-by-default.patch |    6 +-
 ...-first-stop-listeners-then-modules-thanks.patch |   25 ++++++++
 ...e-so-ejabberdctl-number-of-arguments-erro.patch |   42 ++++++++++++++
 ...ess-when-auth-attempt-fails-thanks-to-Zac.patch |   59 ++++++++++++++++++++
 ejabberd.spec                                      |   14 ++++-
 12 files changed, 171 insertions(+), 33 deletions(-)
---
diff --git a/ejabberd-0001-Fix-PAM-service-example-name-to-match-actual-one.patch b/ejabberd-0001-Fix-PAM-service-example-name-to-match-actual-one.patch
index a7db2a3..f5b2add 100644
--- a/ejabberd-0001-Fix-PAM-service-example-name-to-match-actual-one.patch
+++ b/ejabberd-0001-Fix-PAM-service-example-name-to-match-actual-one.patch
@@ -1,11 +1,11 @@
 From 72718b8fcbb19b34e348efcb874fa480e83d7a02 Mon Sep 17 00:00:00 2001
 From: Peter Lemenkov <lemenkov at gmail.com>
 Date: Tue, 16 Feb 2010 16:03:38 +0300
-Subject: [PATCH 1/8] Fix PAM service example name to match actual one
+Subject: [PATCH 01/11] Fix PAM service example name to match actual one
 
 Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
 ---
- src/ejabberd.cfg.example |    2 +-
+ src/ejabberd.cfg.example | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/src/ejabberd.cfg.example b/src/ejabberd.cfg.example
@@ -22,5 +22,5 @@ index a4068ad..9b24a4a 100644
  %%
  %% Authentication using LDAP
 -- 
-1.7.10.4
+1.7.11.5
 
diff --git a/ejabberd-0002-Fixed-delays-in-s2s-connections.patch b/ejabberd-0002-Fixed-delays-in-s2s-connections.patch
index d161c21..d22bd56 100644
--- a/ejabberd-0002-Fixed-delays-in-s2s-connections.patch
+++ b/ejabberd-0002-Fixed-delays-in-s2s-connections.patch
@@ -1,15 +1,15 @@
 From 30037ec8a73263f0d0524b2e1409736838cbb33b Mon Sep 17 00:00:00 2001
 From: Sergei Golovan <sgolovan at nes.ru>
 Date: Tue, 16 Feb 2010 16:07:37 +0300
-Subject: [PATCH 2/8] Fixed delays in s2s connections.
+Subject: [PATCH 02/11] Fixed delays in s2s connections.
 
 Patch by Sergei Golovan increases timeouts in S2S and removes horrible 5-minute
 delay between remote server connection attempts after a falure (in case of
 server is down it would be reasonable, but what happens much more often is a
 network split when the delay is inadmissible).
 ---
- src/ejabberd_s2s_in.erl  |    2 +-
- src/ejabberd_s2s_out.erl |    5 +++--
+ src/ejabberd_s2s_in.erl  | 2 +-
+ src/ejabberd_s2s_out.erl | 5 +++--
  2 files changed, 4 insertions(+), 3 deletions(-)
 
 diff --git a/src/ejabberd_s2s_in.erl b/src/ejabberd_s2s_in.erl
@@ -49,5 +49,5 @@ index 65711fa..cab413f 100644
      end;
  open_socket(closed, StateData) ->
 -- 
-1.7.10.4
+1.7.11.5
 
diff --git a/ejabberd-0003-Introducing-mod_admin_extra.patch b/ejabberd-0003-Introducing-mod_admin_extra.patch
index c2ed978..8401ef9 100644
--- a/ejabberd-0003-Introducing-mod_admin_extra.patch
+++ b/ejabberd-0003-Introducing-mod_admin_extra.patch
@@ -1,7 +1,7 @@
 From 35ddb138ec297a1b5c456fdca73b2ed0cc10c1cf Mon Sep 17 00:00:00 2001
 From: Badlop <badlop at process-one.net>
 Date: Tue, 16 Feb 2010 16:12:17 +0300
-Subject: [PATCH 3/8] Introducing mod_admin_extra
+Subject: [PATCH 03/11] Introducing mod_admin_extra
 
 Adds the mod_admin_extra module to ejabberd.
 This module extends the functionality provided by ejabberdctl
@@ -1603,5 +1603,5 @@ index 0000000..1cef25a
 +is_glob_match(String, Glob) ->
 +    is_regexp_match(String, ejabberd_regexp:sh_to_awk(Glob)).
 -- 
-1.7.10.4
+1.7.11.5
 
diff --git a/ejabberd-0004-Fedora-specific-changes-to-ejabberdctl.patch b/ejabberd-0004-Fedora-specific-changes-to-ejabberdctl.patch
index 71b6f0c..f75606f 100644
--- a/ejabberd-0004-Fedora-specific-changes-to-ejabberdctl.patch
+++ b/ejabberd-0004-Fedora-specific-changes-to-ejabberdctl.patch
@@ -1,11 +1,11 @@
 From 2c01b391dcfdc3cb34f5984a10a1bba3ca341c02 Mon Sep 17 00:00:00 2001
 From: Peter Lemenkov <lemenkov at gmail.com>
 Date: Tue, 16 Feb 2010 16:30:05 +0300
-Subject: [PATCH 4/8] Fedora-specific changes to ejabberdctl
+Subject: [PATCH 04/11] Fedora-specific changes to ejabberdctl
 
 Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
 ---
- src/ejabberdctl.template |    8 ++++----
+ src/ejabberdctl.template | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 diff --git a/src/ejabberdctl.template b/src/ejabberdctl.template
@@ -44,5 +44,5 @@ index 0960f9a..c22478a 100644
  done
  if [ "$ID" -eq "$EJID" ] ; then
 -- 
-1.7.10.4
+1.7.11.5
 
diff --git a/ejabberd-0005-Install-.so-objects-with-0755-permissions.patch b/ejabberd-0005-Install-.so-objects-with-0755-permissions.patch
index a2d0ec9..f0f535b 100644
--- a/ejabberd-0005-Install-.so-objects-with-0755-permissions.patch
+++ b/ejabberd-0005-Install-.so-objects-with-0755-permissions.patch
@@ -1,11 +1,11 @@
 From 924dab202126d7644a8e50e81d1b2de21875bb7f Mon Sep 17 00:00:00 2001
 From: Peter Lemenkov <lemenkov at gmail.com>
 Date: Sat, 12 Jun 2010 14:14:52 +0400
-Subject: [PATCH 5/8] Install *.so objects with 0755 permissions
+Subject: [PATCH 05/11] Install *.so objects with 0755 permissions
 
 Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
 ---
- src/Makefile.in |    2 +-
+ src/Makefile.in | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/src/Makefile.in b/src/Makefile.in
@@ -22,5 +22,5 @@ index 42af5b2..64ed856 100644
  	# Translated strings
  	install -d $(MSGSDIR)
 -- 
-1.7.10.4
+1.7.11.5
 
diff --git a/ejabberd-0006-Use-versioned-directory-for-storing-docs.patch b/ejabberd-0006-Use-versioned-directory-for-storing-docs.patch
index 854ad81..edd0ec9 100644
--- a/ejabberd-0006-Use-versioned-directory-for-storing-docs.patch
+++ b/ejabberd-0006-Use-versioned-directory-for-storing-docs.patch
@@ -1,7 +1,7 @@
 From 889d68a28b4442cf71e8c4ad335a98718402f4a5 Mon Sep 17 00:00:00 2001
 From: Peter Lemenkov <lemenkov at gmail.com>
 Date: Sat, 12 Jun 2010 16:12:11 +0400
-Subject: [PATCH 6/8] Use versioned directory for storing docs
+Subject: [PATCH 06/11] Use versioned directory for storing docs
 
 It's also a good idea to store doc-files under the versioned directory.
 This may greatly simplify parallel installation of different versions of
@@ -14,7 +14,7 @@ http://www.gnu.org/software/autoconf/manual/html_node/Initializing-configure.htm
 
 Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
 ---
- src/Makefile.in |    2 +-
+ src/Makefile.in | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/src/Makefile.in b/src/Makefile.in
@@ -31,5 +31,5 @@ index 64ed856..43b5e1f 100644
  DOCDIR = $(DESTDIR)@docdir@
  
 -- 
-1.7.10.4
+1.7.11.5
 
diff --git a/ejabberd-0007-Support-SASL-GSSAPI-authentication-thanks-to-Mikael-.patch b/ejabberd-0007-Support-SASL-GSSAPI-authentication-thanks-to-Mikael-.patch
index 8795e99..37edf83 100644
--- a/ejabberd-0007-Support-SASL-GSSAPI-authentication-thanks-to-Mikael-.patch
+++ b/ejabberd-0007-Support-SASL-GSSAPI-authentication-thanks-to-Mikael-.patch
@@ -1,19 +1,19 @@
 From f2a612dba3d6ab5dd5b522f74c493c78cdfed6c9 Mon Sep 17 00:00:00 2001
 From: Badlop <badlop at process-one.net>
 Date: Thu, 15 Apr 2010 17:20:16 +0200
-Subject: [PATCH 7/8] Support SASL GSSAPI authentication (thanks to Mikael
+Subject: [PATCH 07/11] Support SASL GSSAPI authentication (thanks to Mikael
  Magnusson)(EJAB-831)
 
 ---
- src/cyrsasl.erl           |   71 +++++++++++++++----
- src/cyrsasl.hrl           |   15 ++++
- src/cyrsasl_anonymous.erl |    6 +-
- src/cyrsasl_digest.erl    |    6 +-
- src/cyrsasl_gssapi.erl    |  166 +++++++++++++++++++++++++++++++++++++++++++++
- src/cyrsasl_plain.erl     |    6 +-
- src/cyrsasl_scram.erl     |    5 +-
- src/ejabberd_c2s.erl      |   12 +++-
- src/ejabberd_socket.erl   |   19 ++++++
+ src/cyrsasl.erl           |  71 +++++++++++++++-----
+ src/cyrsasl.hrl           |  15 +++++
+ src/cyrsasl_anonymous.erl |   6 +-
+ src/cyrsasl_digest.erl    |   6 +-
+ src/cyrsasl_gssapi.erl    | 166 ++++++++++++++++++++++++++++++++++++++++++++++
+ src/cyrsasl_plain.erl     |   6 +-
+ src/cyrsasl_scram.erl     |   5 +-
+ src/ejabberd_c2s.erl      |  12 +++-
+ src/ejabberd_socket.erl   |  19 ++++++
  9 files changed, 281 insertions(+), 25 deletions(-)
  create mode 100644 src/cyrsasl.hrl
  create mode 100644 src/cyrsasl_gssapi.erl
@@ -501,5 +501,5 @@ index 254751b..3509018 100644
  %% Internal functions
  %%====================================================================
 -- 
-1.7.10.4
+1.7.11.5
 
diff --git a/ejabberd-0008-Disable-INET_DIST_INTERFACE-by-default.patch b/ejabberd-0008-Disable-INET_DIST_INTERFACE-by-default.patch
index a9b0b5b..21bc3e0 100644
--- a/ejabberd-0008-Disable-INET_DIST_INTERFACE-by-default.patch
+++ b/ejabberd-0008-Disable-INET_DIST_INTERFACE-by-default.patch
@@ -1,11 +1,11 @@
 From a6a1ee5a9d5a8400415a96456dbb79f4341c3410 Mon Sep 17 00:00:00 2001
 From: Peter Lemenkov <lemenkov at gmail.com>
 Date: Sat, 18 Jun 2011 23:24:28 +0400
-Subject: [PATCH 8/8] Disable INET_DIST_INTERFACE by default
+Subject: [PATCH 08/11] Disable INET_DIST_INTERFACE by default
 
 Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
 ---
- src/ejabberdctl.cfg.example |    2 +-
+ src/ejabberdctl.cfg.example | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/src/ejabberdctl.cfg.example b/src/ejabberdctl.cfg.example
@@ -22,5 +22,5 @@ index b72058a..5ee43cf 100644
  #.
  #' ERL_EPMD_ADDRESS: IP addresses where epmd listens for connections
 -- 
-1.7.10.4
+1.7.11.5
 
diff --git a/ejabberd-0009-On-shutdown-first-stop-listeners-then-modules-thanks.patch b/ejabberd-0009-On-shutdown-first-stop-listeners-then-modules-thanks.patch
new file mode 100644
index 0000000..d24d3b3
--- /dev/null
+++ b/ejabberd-0009-On-shutdown-first-stop-listeners-then-modules-thanks.patch
@@ -0,0 +1,25 @@
+From 15e0cac1523696eac5e9c09b8447429457ff6901 Mon Sep 17 00:00:00 2001
+From: Badlop <badlop at process-one.net>
+Date: Wed, 25 Jul 2012 13:02:21 +0200
+Subject: [PATCH 09/11] On shutdown, first stop listeners, then modules
+ (thanks to Vishal Xica)(EJAB-1566)
+
+---
+ src/ejabberd_app.erl | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/ejabberd_app.erl b/src/ejabberd_app.erl
+index ea467cb..3550f58 100644
+--- a/src/ejabberd_app.erl
++++ b/src/ejabberd_app.erl
+@@ -78,6 +78,7 @@ start(_, _) ->
+ %% This function is called when an application is about to be stopped,
+ %% before shutting down the processes of the application.
+ prep_stop(State) ->
++    ejabberd_listener:stop_listeners(),
+     stop_modules(),
+     ejabberd_admin:stop(),
+     broadcast_c2s_shutdown(),
+-- 
+1.7.11.5
+
diff --git a/ejabberd-0010-Added-clause-so-ejabberdctl-number-of-arguments-erro.patch b/ejabberd-0010-Added-clause-so-ejabberdctl-number-of-arguments-erro.patch
new file mode 100644
index 0000000..e416892
--- /dev/null
+++ b/ejabberd-0010-Added-clause-so-ejabberdctl-number-of-arguments-erro.patch
@@ -0,0 +1,42 @@
+From e04d73120c0b236acb26816e0464b1cd79d2c0bd Mon Sep 17 00:00:00 2001
+From: Badlop <badlop at process-one.net>
+Date: Mon, 27 Aug 2012 16:38:52 +0200
+Subject: [PATCH 10/11] Added clause so ejabberdctl number of arguments error
+ report works with R15
+
+---
+ src/ejabberd_ctl.erl | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/src/ejabberd_ctl.erl b/src/ejabberd_ctl.erl
+index ceb4c34..01b07ea 100644
+--- a/src/ejabberd_ctl.erl
++++ b/src/ejabberd_ctl.erl
+@@ -292,6 +292,7 @@ call_command([CmdString | Args], Auth, AccessCommands) ->
+ 		    Result = ejabberd_commands:execute_command(AccessCommands, Auth, Command,
+ 							       ArgsFormatted),
+ 		    format_result(Result, ResultFormat);
++		%% This case clause is for Erlang R14 and older
+ 		{'EXIT', {function_clause,[{lists,zip,[A1, A2]} | _]}} ->
+ 		    {NumCompa, TextCompa} =
+ 			case {length(A1), length(A2)} of
+@@ -300,6 +301,16 @@ call_command([CmdString | Args], Auth, AccessCommands) ->
+ 			end,
+ 		    {io_lib:format("Error: the command ~p requires ~p ~s.",
+ 				   [CmdString, NumCompa, TextCompa]),
++		     wrong_command_arguments};
++		%% This case clause is for Erlang R15 and newer
++		{'EXIT', {function_clause,[{lists,zip,[A1, A2],_} | _]}} ->
++		    {NumCompa, TextCompa} =
++			case {length(A1), length(A2)} of
++			    {L1, L2} when L1 < L2 -> {L2-L1, "less argument"};
++			    {L1, L2} when L1 > L2 -> {L1-L2, "more argument"}
++			end,
++		    {io_lib:format("Error: the command ~p requires ~p ~s.",
++				   [CmdString, NumCompa, TextCompa]),
+ 		     wrong_command_arguments}
+ 	    end
+     end.
+-- 
+1.7.11.5
+
diff --git a/ejabberd-0011-Log-IP-address-when-auth-attempt-fails-thanks-to-Zac.patch b/ejabberd-0011-Log-IP-address-when-auth-attempt-fails-thanks-to-Zac.patch
new file mode 100644
index 0000000..e624b1f
--- /dev/null
+++ b/ejabberd-0011-Log-IP-address-when-auth-attempt-fails-thanks-to-Zac.patch
@@ -0,0 +1,59 @@
+From 6ce4398360d5bab4322eb1ca93550c0cb553f94e Mon Sep 17 00:00:00 2001
+From: Badlop <badlop at process-one.net>
+Date: Mon, 27 Aug 2012 17:40:01 +0200
+Subject: [PATCH 11/11] Log IP address when auth attempt fails (thanks to Zach
+ Calvert)
+
+---
+ src/ejabberd_c2s.erl | 15 +++++++++------
+ 1 file changed, 9 insertions(+), 6 deletions(-)
+
+diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
+index 038d3c5..8e4a7b6 100644
+--- a/src/ejabberd_c2s.erl
++++ b/src/ejabberd_c2s.erl
+@@ -564,10 +564,11 @@ wait_for_auth({xmlstreamelement, El}, StateData) ->
+ 			    fsm_next_state_pack(session_established,
+                                                 NewStateData);
+ 			_ ->
++			    IP = peerip(StateData#state.sockmod, StateData#state.socket),
+ 			    ?INFO_MSG(
+-			       "(~w) Failed legacy authentication for ~s",
++			       "(~w) Failed legacy authentication for ~s from IP ~s (~w)",
+ 			       [StateData#state.socket,
+-				jlib:jid_to_string(JID)]),
++				jlib:jid_to_string(JID), jlib:ip_to_list(IP), IP]),
+ 			    Err = jlib:make_error_reply(
+ 				    El, ?ERR_NOT_AUTHORIZED),
+ 			    send_element(StateData, Err),
+@@ -654,10 +655,11 @@ wait_for_feature_request({xmlstreamelement, El}, StateData) ->
+ 				   StateData#state{
+ 				     sasl_state = NewSASLState});
+ 		{error, Error, Username} ->
++		    IP = peerip(StateData#state.sockmod, StateData#state.socket),
+ 		    ?INFO_MSG(
+-		       "(~w) Failed authentication for ~s@~s",
++		       "(~w) Failed authentication for ~s@~s from IP ~s (~w)",
+ 		       [StateData#state.socket,
+-			Username, StateData#state.server]),
++			Username, StateData#state.server, jlib:ip_to_list(IP), IP]),
+ 		    send_element(StateData,
+ 				 {xmlelement, "failure",
+ 				  [{"xmlns", ?NS_SASL}],
+@@ -807,10 +809,11 @@ wait_for_sasl_response({xmlstreamelement, El}, StateData) ->
+ 		    fsm_next_state(wait_for_sasl_response,
+ 		     StateData#state{sasl_state = NewSASLState});
+ 		{error, Error, Username} ->
++		    IP = peerip(StateData#state.sockmod, StateData#state.socket),
+ 		    ?INFO_MSG(
+-		       "(~w) Failed authentication for ~s@~s",
++		       "(~w) Failed authentication for ~s@~s from IP ~s (~w)",
+ 		       [StateData#state.socket,
+-			Username, StateData#state.server]),
++			Username, StateData#state.server, jlib:ip_to_list(IP), IP]),
+ 		    send_element(StateData,
+ 				 {xmlelement, "failure",
+ 				  [{"xmlns", ?NS_SASL}],
+-- 
+1.7.11.5
+
diff --git a/ejabberd.spec b/ejabberd.spec
index e88d8f3..9c98a83 100644
--- a/ejabberd.spec
+++ b/ejabberd.spec
@@ -11,7 +11,7 @@
 
 Name:           ejabberd
 Version:        2.1.11
-Release:        4%{?dist}
+Release:        5%{?dist}
 Summary:        A distributed, fault-tolerant Jabber/XMPP server
 
 Group:          Applications/Internet
@@ -47,6 +47,12 @@ Patch6: ejabberd-0006-Use-versioned-directory-for-storing-docs.patch
 Patch7: ejabberd-0007-Support-SASL-GSSAPI-authentication-thanks-to-Mikael-.patch
 # Disable IP restriction for ejabberdctl (seems that it doesn't work well)
 Patch8: ejabberd-0008-Disable-INET_DIST_INTERFACE-by-default.patch
+# cherry-picked from trunk
+Patch9: ejabberd-0009-On-shutdown-first-stop-listeners-then-modules-thanks.patch
+# cherry-picked from trunk
+Patch10: ejabberd-0010-Added-clause-so-ejabberdctl-number-of-arguments-erro.patch
+# cherry-picked from trunk
+Patch11: ejabberd-0011-Log-IP-address-when-auth-attempt-fails-thanks-to-Zac.patch
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
@@ -119,6 +125,9 @@ Documentation for ejabberd.
 %patch6 -p1 -b .versioned_docdir
 %patch7 -p1 -b .gssapi
 %patch8 -p1 -b .disable_ip_restriction_for_ejabberdctl
+%patch9 -p1 -b .stop_listeners_first
+%patch10 -p1 -b .r15b
+%patch11 -p1 -b .log_intruders_ip
 
 # FIXME last-minute fix for 2.1.11 only
 sed -i -e "s,2.1.x,2.1.11,g" src/configure
@@ -392,6 +401,9 @@ rm -rf %{buildroot}
 %doc %{_docdir}/%{name}-%{version}/*.txt
 
 %changelog
+* Mon Sep 10 2012 Peter Lemenkov <lemenkov at gmail.com> - 2.1.11-5
+- Cherry-picked three new patches from upstream trunk
+
 * Wed Jul 18 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 2.1.11-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
 


More information about the scm-commits mailing list