diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ejabberd_c2s.erl | 20 | ||||
-rw-r--r-- | src/ejabberd_odbc.erl | 2 |
2 files changed, 14 insertions, 8 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index ad00e89bd..4c5f677c3 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -2454,6 +2454,15 @@ fsm_next_state_gc(StateName, PackedStateData) -> %% fsm_next_state: Generate the next_state FSM tuple with different %% timeout, depending on the future state +fsm_next_state(session_established, #state{mgmt_max_queue = exceeded} = + StateData) -> + ?WARNING_MSG("ACK queue too long, terminating session for ~s", + [jlib:jid_to_string(StateData#state.jid)]), + Err = ?SERRT_POLICY_VIOLATION(StateData#state.lang, + <<"Too many unacked stanzas">>), + send_element(StateData, Err), + send_trailer(StateData), + {stop, normal, StateData#state{mgmt_resend = false}}; fsm_next_state(session_established, #state{mgmt_state = pending} = StateData) -> fsm_next_state(wait_for_resume, StateData); fsm_next_state(session_established, StateData) -> @@ -2815,18 +2824,15 @@ mgmt_queue_drop(StateData, NumHandled) -> StateData#state.mgmt_queue), StateData#state{mgmt_queue = NewQueue}. -check_queue_length(#state{mgmt_max_queue = infinity} = StateData) -> +check_queue_length(#state{mgmt_max_queue = Limit} = StateData) + when Limit == infinity; + Limit == exceeded -> StateData; check_queue_length(#state{mgmt_queue = Queue, mgmt_max_queue = Limit} = StateData) -> case queue:len(Queue) > Limit of true -> - ?WARNING_MSG("ACK queue too long, terminating session for ~s", - [jlib:jid_to_string(StateData#state.jid)]), - Lang = StateData#state.lang, - Err = ?SERRT_POLICY_VIOLATION(Lang, <<"Too many unacked stanzas">>), - self() ! {kick, queue_overflow, Err}, - StateData#state{mgmt_resend = false}; % Don't resend the flood! + StateData#state{mgmt_max_queue = exceeded}; false -> StateData end. diff --git a/src/ejabberd_odbc.erl b/src/ejabberd_odbc.erl index 9dcf37cc2..78be623d4 100644 --- a/src/ejabberd_odbc.erl +++ b/src/ejabberd_odbc.erl @@ -204,7 +204,7 @@ decode_term(Bin) -> %%%---------------------------------------------------------------------- init([Host, StartInterval]) -> case ejabberd_config:get_option( - {keepalive_interval, Host}, + {odbc_keepalive_interval, Host}, fun(I) when is_integer(I), I>0 -> I end) of undefined -> ok; |