]> granicus.if.org Git - ejabberd/commitdiff
* src/ejabberd_listener.erl: Define send timeout option to avoid blocking on socket...
authorMickaël Rémond <mickael.remond@process-one.net>
Thu, 8 Jan 2009 20:49:16 +0000 (20:49 +0000)
committerMickaël Rémond <mickael.remond@process-one.net>
Thu, 8 Jan 2009 20:49:16 +0000 (20:49 +0000)
* src/ejabberd_s2s_out.erl: Likewise.

SVN Revision: 1784

ChangeLog
src/ejabberd_listener.erl
src/ejabberd_s2s_out.erl

index 124587c9ce166dc87470813556011781343c93aa..1c1eb06603727862a39e3316ce2faef317583aa7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-01-08  Mickael Remond  <mremond@process-one.net>
+
+       * src/ejabberd_listener.erl: Define send timeout option to avoid
+       blocking on socket send (EJAB-746).
+       * src/ejabberd_s2s_out.erl: Likewise.
+
 2009-01-08  Christophe Romain <christophe.romain@process-one.net>
 
        * src/mod_pubsub/mod_pubsub.erl: completely support subscription using
index 9c46f6d4cd726f512fca2cfbbbb8330c6daecd0a..6992c6a53580c84e5116e417500ad5e6290ef2fb 100644 (file)
@@ -16,7 +16,7 @@
 %%% but WITHOUT ANY WARRANTY; without even the implied warranty of
 %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 %%% General Public License for more details.
-%%%                         
+%%%
 %%% You should have received a copy of the GNU General Public License
 %%% along with this program; if not, write to the Free Software
 %%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
@@ -38,6 +38,9 @@
 
 -include("ejabberd.hrl").
 
+%% We do not block on send anymore.
+-define(TCP_SEND_TIMEOUT, 15000).
+
 start_link() ->
     supervisor:start_link({local, ejabberd_listeners}, ?MODULE, []).
 
@@ -96,10 +99,11 @@ init(Port, Module, Opts) ->
                            end, Opts),
 
     Res = gen_tcp:listen(Port, [binary,
-                               {packet, 0}, 
+                               {packet, 0},
                                {active, false},
                                {reuseaddr, true},
                                {nodelay, true},
+                               {send_timeout, ?TCP_SEND_TIMEOUT},
                                {keepalive, true} |
                                SockOpts]),
     case Res of
index ab7820b96ef0a8e70a0feb42ec716e370adb94b7..bee85d64af9e5e93932b6b99860eaeb7a60dec19 100644 (file)
@@ -16,7 +16,7 @@
 %%% but WITHOUT ANY WARRANTY; without even the implied warranty of
 %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 %%% General Public License for more details.
-%%%                         
+%%%
 %%% You should have received a copy of the GNU General Public License
 %%% along with this program; if not, write to the Free Software
 %%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
@@ -95,6 +95,9 @@
 %% -define(FSMLIMITS, [{max_queue, 2000}]).
 -define(FSMTIMEOUT, 30000).
 
+%% We do not block on send anymore.
+-define(TCP_SEND_TIMEOUT, 15000).
+
 %% Maximum delay to wait before retrying to connect after a failed attempt.
 %% Specified in miliseconds. Default value is 5 minutes.
 -define(MAX_RETRY_DELAY, 300000).
@@ -267,6 +270,7 @@ open_socket2(Type, Addr, Port) ->
     Timeout = outgoing_s2s_timeout(),
     case (catch ejabberd_socket:connect(Addr, Port,
                                        [binary, {packet, 0},
+                                        {send_timeout, ?TCP_SEND_TIMEOUT},
                                         {active, false}, Type],
                                        Timeout)) of
        {ok, _Socket} = R -> R;