Skip to content

Commit

Permalink
supervisor child delete after disconnect
Browse files Browse the repository at this point in the history
  • Loading branch information
0xAX committed Mar 24, 2011
1 parent d19ad82 commit fb1fc99
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 17 deletions.
36 changes: 27 additions & 9 deletions src/popd_fsm.erl
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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} ->
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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} ->
Expand Down
32 changes: 24 additions & 8 deletions src/smtp_fsm.erl
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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} ->
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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;


Expand Down

0 comments on commit fb1fc99

Please sign in to comment.