mirror of
https://github.com/processone/ejabberd.git
synced 2024-06-14 22:00:16 +02:00
* src/ejabberd_c2s.erl: Bugfix in processing of connection
replacement SVN Revision: 180
This commit is contained in:
parent
48e8a0c0c6
commit
83a0be1009
|
@ -1,3 +1,8 @@
|
||||||
|
2003-12-02 Alexey Shchepin <alexey@sevcom.net>
|
||||||
|
|
||||||
|
* src/ejabberd_c2s.erl: Bugfix in processing of connection
|
||||||
|
replacement
|
||||||
|
|
||||||
2003-11-28 Alexey Shchepin <alexey@sevcom.net>
|
2003-11-28 Alexey Shchepin <alexey@sevcom.net>
|
||||||
|
|
||||||
* src/ejabberd_c2s.erl: Added workaround for some Java clients
|
* src/ejabberd_c2s.erl: Added workaround for some Java clients
|
||||||
|
|
|
@ -676,7 +676,7 @@ handle_info({send_text, Text}, StateName, StateData) ->
|
||||||
handle_info(replaced, StateName, StateData) ->
|
handle_info(replaced, StateName, StateData) ->
|
||||||
% TODO
|
% TODO
|
||||||
%send_text(StateData#state.sender, Text),
|
%send_text(StateData#state.sender, Text),
|
||||||
{stop, normal, StateData#state{user = ""}};
|
{stop, normal, StateData#state{authentificated = replaced}};
|
||||||
handle_info({route, From, To, Packet}, StateName, StateData) ->
|
handle_info({route, From, To, Packet}, StateName, StateData) ->
|
||||||
{xmlelement, Name, Attrs, Els} = Packet,
|
{xmlelement, Name, Attrs, Els} = Packet,
|
||||||
{Pass, NewAttrs, NewState} =
|
{Pass, NewAttrs, NewState} =
|
||||||
|
@ -811,17 +811,38 @@ handle_info({route, From, To, Packet}, StateName, StateData) ->
|
||||||
terminate(Reason, StateName, StateData) ->
|
terminate(Reason, StateName, StateData) ->
|
||||||
case StateName of
|
case StateName of
|
||||||
session_established ->
|
session_established ->
|
||||||
|
case StateData#state.authentificated of
|
||||||
|
replaced ->
|
||||||
|
?INFO_MSG("(~w) Replaced session for ~s",
|
||||||
|
[StateData#state.socket,
|
||||||
|
jlib:jid_to_string(StateData#state.jid)]),
|
||||||
|
From = StateData#state.jid,
|
||||||
|
Packet = {xmlelement, "presence",
|
||||||
|
[{"type", "unavailable"}],
|
||||||
|
[{xmlelement, "status", [],
|
||||||
|
[{xmlcdata, "Replaced by new connection"}]}]},
|
||||||
|
ejabberd_sm:unset_presence(StateData#state.user,
|
||||||
|
StateData#state.resource),
|
||||||
|
presence_broadcast(
|
||||||
|
StateData, From, StateData#state.pres_a, Packet),
|
||||||
|
presence_broadcast(
|
||||||
|
StateData, From, StateData#state.pres_i, Packet);
|
||||||
|
_ ->
|
||||||
?INFO_MSG("(~w) Close session for ~s",
|
?INFO_MSG("(~w) Close session for ~s",
|
||||||
[StateData#state.socket,
|
[StateData#state.socket,
|
||||||
jlib:jid_to_string(StateData#state.jid)]),
|
jlib:jid_to_string(StateData#state.jid)]),
|
||||||
ejabberd_sm:close_session(StateData#state.user,
|
ejabberd_sm:close_session(StateData#state.user,
|
||||||
StateData#state.resource),
|
StateData#state.resource),
|
||||||
From = StateData#state.jid,
|
From = StateData#state.jid,
|
||||||
Packet = {xmlelement, "presence", [{"type", "unavailable"}], []},
|
Packet = {xmlelement, "presence",
|
||||||
|
[{"type", "unavailable"}], []},
|
||||||
ejabberd_sm:unset_presence(StateData#state.user,
|
ejabberd_sm:unset_presence(StateData#state.user,
|
||||||
StateData#state.resource),
|
StateData#state.resource),
|
||||||
presence_broadcast(StateData, From, StateData#state.pres_a, Packet),
|
presence_broadcast(
|
||||||
presence_broadcast(StateData, From, StateData#state.pres_i, Packet);
|
StateData, From, StateData#state.pres_a, Packet),
|
||||||
|
presence_broadcast(
|
||||||
|
StateData, From, StateData#state.pres_i, Packet)
|
||||||
|
end;
|
||||||
_ ->
|
_ ->
|
||||||
ok
|
ok
|
||||||
end,
|
end,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user