aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2007-07-15 07:28:47 +0000
committerAlexey Shchepin <alexey@process-one.net>2007-07-15 07:28:47 +0000
commit2810c2b3001acffe2c798b3b41f91067129f8559 (patch)
treedce03c45e31b0171c59935ab88533036448e5c61
parent* src/ejabberd_s2s_out.erl: Bounce packets after unregistering s2s (diff)
* src/ejabberd_s2s.erl: Added remove_connection/3
* src/ejabberd_s2s_out.erl: Bugfix: remove only own s2s record SVN Revision: 812
-rw-r--r--ChangeLog5
-rw-r--r--src/ejabberd_s2s.erl9
-rw-r--r--src/ejabberd_s2s_out.erl4
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 <alexey@sevcom.net>
+
+ * src/ejabberd_s2s.erl: Added remove_connection/3
+ * src/ejabberd_s2s_out.erl: Bugfix: remove only own s2s record
+
2007-07-11 Alexey Shchepin <alexey@sevcom.net>
* 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