diff --git a/src/popd_fsm.erl b/src/popd_fsm.erl index 83ccf2c..596463f 100644 --- a/src/popd_fsm.erl +++ b/src/popd_fsm.erl @@ -63,7 +63,9 @@ autorization(Event, State) -> error -> error end - catch _:_ -> gen_tcp:close(State#state.socket) + catch _:_ -> + gen_tcp:close(State#state.socket), + supervisor:delete_child(pop_fsm_sup, popd_fsm) end, %% password getting @@ -96,7 +98,9 @@ autorization(Event, State) -> error -> error end - catch _:_ -> gen_tcp:close(State#state.socket) + catch _:_ -> + gen_tcp:close(State#state.socket), + supervisor:delete_child(pop_fsm_sup, popd_fsm) end, try @@ -111,7 +115,9 @@ autorization(Event, State) -> gen_tcp:send(State#state.socket, pop_messages:err_message()), autorization(Event, State) end - catch _:_ -> gen_tcp:close(State#state.socket) + catch _:_ -> + gen_tcp:close(State#state.socket), + supervisor:delete_child(pop_fsm_sup, popd_fsm) end; {error, closed} -> @@ -166,7 +172,9 @@ transaction(Event, State) -> error -> error end - catch _:_ -> gen_tcp:close(State#state.socket) + catch _:_ -> + gen_tcp:close(State#state.socket), + supervisor:delete_child(pop_fsm_sup, popd_fsm) end, try @@ -200,7 +208,9 @@ transaction(Event, State) -> error -> error end - catch _:_ -> gen_tcp:close(State#state.socket) + catch _:_ -> + gen_tcp:close(State#state.socket), + supervisor:delete_child(pop_fsm_sup, popd_fsm) end, %% TOP command @@ -220,7 +230,9 @@ transaction(Event, State) -> error -> error end - catch _:_ -> gen_tcp:close(State#state.socket) + catch _:_ -> + gen_tcp:close(State#state.socket), + supervisor:delete_child(pop_fsm_sup, popd_fsm) end, %% RETR command @@ -243,7 +255,9 @@ transaction(Event, State) -> error -> error end - catch _:_ -> gen_tcp:close(State#state.socket) + catch _:_ -> + gen_tcp:close(State#state.socket), + supervisor:delete_child(pop_fsm_sup, popd_fsm) end, try @@ -257,7 +271,9 @@ transaction(Event, State) -> error -> error end - catch _:_ -> gen_tcp:close(State#state.socket) + catch _:_ -> + gen_tcp:close(State#state.socket), + supervisor:delete_child(pop_fsm_sup, popd_fsm) end, try @@ -289,7 +305,9 @@ transaction(Event, State) -> gen_tcp:send(State#state.socket, pop_messages:err_message()), transaction(Event, State ) end - catch _:_ -> gen_tcp:close(State#state.socket) + catch _:_ -> + gen_tcp:close(State#state.socket), + supervisor:delete_child(pop_fsm_sup, popd_fsm) end; {error, closed} -> diff --git a/src/smtp_fsm.erl b/src/smtp_fsm.erl index 2f5de04..96bbe89 100644 --- a/src/smtp_fsm.erl +++ b/src/smtp_fsm.erl @@ -62,7 +62,9 @@ autorization(Event, State) -> error -> error end - catch _:_ -> gen_tcp:close(State#state.socket) + catch _:_ -> + gen_tcp:close(State#state.socket), + supervisor:delete_child(smtp_fsm_sup, smtp_fsm) end, %% EHLO command @@ -82,7 +84,9 @@ autorization(Event, State) -> error -> error end - catch _:_ -> gen_tcp:close(State#state.socket) + catch _:_ -> + gen_tcp:close(State#state.socket), + supervisor:delete_child(smtp_fsm_sup, smtp_fsm) end, try @@ -100,7 +104,9 @@ autorization(Event, State) -> gen_tcp:send(State#state.socket, pop_messages:err_message()), autorization(Event, State ) end - catch _:_ -> gen_tcp:close(State#state.socket) + catch _:_ -> + gen_tcp:close(State#state.socket), + supervisor:delete_child(smtp_fsm_sup, smtp_fsm) end; {error, closed} -> @@ -127,7 +133,9 @@ mail_transaction(Event, State) -> error -> error end - catch _:_ -> gen_tcp:close(State#state.socket) + catch _:_ -> + gen_tcp:close(State#state.socket), + supervisor:delete_child(smtp_fsm_sup, smtp_fsm) end, %% MAIL FROM command @@ -144,7 +152,9 @@ mail_transaction(Event, State) -> error -> error end - catch _:_ -> gen_tcp:close(State#state.socket) + catch _:_ -> + gen_tcp:close(State#state.socket), + supervisor:delete_child(smtp_fsm_sup, smtp_fsm) end, try @@ -159,7 +169,9 @@ mail_transaction(Event, State) -> gen_tcp:send(State#state.socket, "250 OK \r\n"), mail_transaction(Event, State#state{client = underfined}) end - catch _:_ -> gen_tcp:close(State#state.socket) + catch _:_ -> + gen_tcp:close(State#state.socket), + supervisor:delete_child(smtp_fsm_sup, smtp_fsm) end; {error, closed} -> ok @@ -184,7 +196,9 @@ recv_rcpt_transaction(Event, State) -> error -> error end - catch _:_ -> gen_tcp:close(State#state.socket) + catch _:_ -> + gen_tcp:close(State#state.socket), + supervisor:delete_child(smtp_fsm_sup, smtp_fsm) end, try @@ -329,7 +343,9 @@ recv_rcpt_transaction(Event, State) -> gen_tcp:send(State#state.socket, pop_messages:err_message()), mail_transaction(Event, State ) end - catch _:_ -> gen_tcp:close(State#state.socket) + catch _:_ -> + gen_tcp:close(State#state.socket), + supervisor:delete_child(smtp_fsm_sup, smtp_fsm) end;