diff options
author | Badlop <badlop@process-one.net> | 2010-01-04 23:32:44 +0300 |
---|---|---|
committer | Badlop <badlop@process-one.net> | 2010-01-04 23:32:44 +0300 |
commit | 8c0cc95a55b916e59daee1b0bf38d4600fcf9103 (patch) | |
tree | b7081251bcdc2d3ecc48c16c2faa4bf53a8b1e92 /src/ejabberd_c2s.erl | |
parent | 38dfef923c1269e2bbbb3ca24d70a387579434f6 (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.erl | 13 |
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). |