From 2810c2b3001acffe2c798b3b41f91067129f8559 Mon Sep 17 00:00:00 2001 From: Alexey Shchepin Date: Sun, 15 Jul 2007 07:28:47 +0000 Subject: [PATCH] * src/ejabberd_s2s.erl: Added remove_connection/3 * src/ejabberd_s2s_out.erl: Bugfix: remove only own s2s record SVN Revision: 812 --- ChangeLog | 5 +++++ src/ejabberd_s2s.erl | 9 +++++++++ src/ejabberd_s2s_out.erl | 4 ++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5347c5d5c..4759b99b9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-07-15 Alexey Shchepin + + * src/ejabberd_s2s.erl: Added remove_connection/3 + * src/ejabberd_s2s_out.erl: Bugfix: remove only own s2s record + 2007-07-11 Alexey Shchepin * src/ejabberd_s2s_out.erl: Bounce packets after unregistering s2s diff --git a/src/ejabberd_s2s.erl b/src/ejabberd_s2s.erl index 97ef9556e..76fc2d39f 100644 --- a/src/ejabberd_s2s.erl +++ b/src/ejabberd_s2s.erl @@ -19,6 +19,7 @@ get_key/1, try_register/1, remove_connection/1, + remove_connection/3, dirty_get_connections/0, ctl_process/2 ]). @@ -59,6 +60,14 @@ remove_connection(FromTo) -> end, mnesia:transaction(F). +remove_connection(FromTo, Pid, Key) -> + F = fun() -> + mnesia:delete_object(#s2s{fromto = FromTo, + pid = Pid, + key = Key}) + end, + mnesia:transaction(F). + have_connection(FromTo) -> case catch mnesia:dirty_read(s2s, FromTo) of [_] -> diff --git a/src/ejabberd_s2s_out.erl b/src/ejabberd_s2s_out.erl index 2189a419d..e587bbf34 100644 --- a/src/ejabberd_s2s_out.erl +++ b/src/ejabberd_s2s_out.erl @@ -656,8 +656,8 @@ terminate(Reason, StateName, StateData) -> false -> ok; Key -> - ejabberd_s2s:remove_connection({StateData#state.myname, - StateData#state.server}) + ejabberd_s2s:remove_connection( + {StateData#state.myname, StateData#state.server}, self(), Key) end, bounce_queue(StateData#state.queue, ?ERR_REMOTE_SERVER_NOT_FOUND), case StateData#state.socket of