Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/processone/ejabberd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2010-01-04 23:32:44 +0300
committerBadlop <badlop@process-one.net>2010-01-04 23:32:44 +0300
commit8c0cc95a55b916e59daee1b0bf38d4600fcf9103 (patch)
treeb7081251bcdc2d3ecc48c16c2faa4bf53a8b1e92 /src/ejabberd_c2s.erl
parent38dfef923c1269e2bbbb3ca24d70a387579434f6 (diff)
When ejabberd stops, send stream close to clients (thanks to Alexey Shchepin)(EJAB-1112)
SVN Revision: 2859
Diffstat (limited to 'src/ejabberd_c2s.erl')
-rw-r--r--src/ejabberd_c2s.erl13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index 2346eb015..393e3795c 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -1258,6 +1258,19 @@ handle_info({route, From, To, Packet}, StateName, StateData) ->
handle_info({'DOWN', Monitor, _Type, _Object, _Info}, _StateName, StateData)
when Monitor == StateData#state.socket_monitor ->
{stop, normal, StateData};
+handle_info(system_shutdown, StateName, StateData) ->
+ case StateName of
+ wait_for_stream ->
+ send_header(StateData#state.streamid, ?MYNAME, "1.0", ""),
+ send_element(StateData, exmpp_stream:error('system-shutdown')),
+ send_text(StateData, ?STREAM_TRAILER),
+ ok;
+ _ ->
+ send_element(StateData, exmpp_stream:error('system-shutdown')),
+ send_text(StateData, ?STREAM_TRAILER),
+ ok
+ end,
+ {stop, normal, StateData};
handle_info(Info, StateName, StateData) ->
?ERROR_MSG("Unexpected info: ~p", [Info]),
fsm_next_state(StateName, StateData).