From 2eb149c4781ebf3c9af63a537dcebb8e58af627b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Reimer?= Date: Wed, 4 Oct 2017 17:37:31 +0200 Subject: [PATCH] actually stop on halt --- src/ramjet_session.erl | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/ramjet_session.erl b/src/ramjet_session.erl index 5b7d639..b3159a7 100644 --- a/src/ramjet_session.erl +++ b/src/ramjet_session.erl @@ -35,19 +35,29 @@ handle_info(next_task, State = #state{task_state = TaskState, handler = Handler, Before = os:timestamp(), {Outcome, NewTaskState} = Handler:handle_task(NextTask, TaskState), Elapsed = timer:now_diff(os:timestamp(), Before) * 1.0, - case Outcome of - ok -> - ramjet_stats:record(Command, Elapsed); - halt -> - ramjet_stats:record(Command, Elapsed), - Handler:terminate(TaskState); - error -> - ramjet_stats:record(Command, error), - Handler:terminate(TaskState) - end, - self() ! next_task, - {noreply, State#state{task_state = NewTaskState, tasks = Tasks}}. + Continue = + case Outcome of + ok -> + ramjet_stats:record(Command, Elapsed), + true; + halt -> + ramjet_stats:record(Command, Elapsed), + Handler:terminate(TaskState), + false; + error -> + ramjet_stats:record(Command, error), + Handler:terminate(TaskState), + true + end, + + case Continue of + true -> + self() ! next_task, + {noreply, State#state{task_state = NewTaskState, tasks = Tasks}}; + false -> + {stop, normal, State} + end. terminate(normal, _State) -> ok;