Page MenuHomePhorge

kolab_guam_ensure_eimap_always_dies.diff

Authored By
seigo
Jul 12 2016, 4:59 PM
Size
1 KB
Referenced Files
None
Subscribers
None

kolab_guam_ensure_eimap_always_dies.diff

diff --git a/apps/kolab_guam/src/kolab_guam_session.erl b/apps/kolab_guam/src/kolab_guam_session.erl
index 4db902d..6b3db02 100644
--- a/apps/kolab_guam/src/kolab_guam_session.erl
+++ b/apps/kolab_guam/src/kolab_guam_session.erl
@@ -27,7 +27,7 @@
%% state record definition
-record(state, { listen_socket, socket = undefined, super_pid, tls_config = [], client_implicit_tls = false, client_tls_active = false, server_config = [],
- rules_active = [], rules_deciding = [], imap_session, inflator, deflator }).
+ rules_active = [], rules_deciding = [], imap_session = undefined, inflator, deflator }).
%% public API
start_link(SupervisorPID, ListenSocket, ImapConfig, ImplicitTLS, TLSConfig, Rules) -> gen_server:start_link(?MODULE, [SupervisorPID, ListenSocket, ImapConfig, ImplicitTLS, TLSConfig, Rules], []).
@@ -103,16 +103,19 @@ handle_info({ imap_server_response, Data }, #state{ socket = Socket, imap_sessio
relay_response(Socket, postprocess_server_data(Deflator, ModifiedData), TLS),
{ noreply, State#state{ rules_active = CurrentlyActiveRules } };
handle_info({ 'EXIT', PID, _Reason }, #state { imap_session = PID } = State) ->
- { stop, normal, State };
+ { stop, normal, State#state{ imap_session = undefined } };
handle_info(Info, State) ->
lager:debug("Received unexpected info... ~p", [Info]),
{ noreply, State }.
-terminate(_Reason, #state{ inflator = Inflator, deflator = Deflator, socket = Socket, client_implicit_tls = ImplicitTLS, client_tls_active = TLS }) ->
- %lager:debug("Termination!~p", [self()]),
+terminate(_Reason, #state{ inflator = Inflator, imap_session = ImapSession, deflator = Deflator, socket = Socket, client_implicit_tls = ImplicitTLS, client_tls_active = TLS }) ->
close_zlib_handle(Inflator),
close_zlib_handle(Deflator),
close_socket(ImplicitTLS, TLS, Socket),
+ case ImapSession of
+ undefined -> ok;
+ _ -> exit(ImapSession, kill)
+ end,
ok.
code_change(_OldVsn, State, _Extra) ->

File Metadata

Mime Type
text/x-diff
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
177799
Default Alt Text
kolab_guam_ensure_eimap_always_dies.diff (1 KB)

Event Timeline