diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2012-01-04 16:43:10 +1000 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2012-01-04 16:43:10 +1000 |
commit | 2948cddebf59378909852b179677040a2a64e909 (patch) | |
tree | 41ff06ff35ed0bd125a82eacb7cbf4a1ee172009 /src | |
parent | Merge branch '2.2.x' of git+ssh://gitorious.process-one.net/+ejabberd-develop... (diff) |
Check a node of a receiver, not a monitor.
This should fix the previous commit (EJABS-1798)
Diffstat (limited to 'src')
-rw-r--r-- | src/ejabberd_c2s.erl | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index 81d97bebc..92ca4f11e 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -1747,11 +1747,12 @@ handle_info({migrate, Node}, StateName, StateData) -> fsm_next_state(StateName, StateData) end; handle_info({migrate_shutdown, Node, After}, StateName, StateData) -> - if StateData#state.sockmod == ejabberd_frontend_socket orelse - StateData#state.xml_socket == true orelse - node(StateData#state.socket_monitor) /= node() -> + case StateData#state.sockmod == ejabberd_frontend_socket orelse + StateData#state.xml_socket == true orelse + is_remote_receiver(StateData#state.socket) of + true -> migrate(self(), Node, After); - true -> + false -> self() ! system_shutdown end, fsm_next_state(StateName, StateData); @@ -3609,3 +3610,8 @@ get_jid_from_opts(Opts) -> _ -> error end. + +is_remote_receiver(#socket_state{receiver = Pid}) when is_pid(Pid) -> + node(Pid) /= node(); +is_remote_receiver(_) -> + false. |