diff options
-rw-r--r-- | lib/snmp/src/manager/snmpm_net_if.erl | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/snmp/src/manager/snmpm_net_if.erl b/lib/snmp/src/manager/snmpm_net_if.erl index af78308147..af4f6e2f70 100644 --- a/lib/snmp/src/manager/snmpm_net_if.erl +++ b/lib/snmp/src/manager/snmpm_net_if.erl @@ -750,8 +750,18 @@ handle_info_down(Info, State) -> %% Purpose: Shutdown the server %% Returns: any (ignored by gen_server) %%-------------------------------------------------------------------- -terminate(Reason, #state{log = Log, irgc = IrGcRef}) -> +terminate(Reason, #state{log = Log, + irgc = IrGcRef, + transports = Transports}) -> ?vdebug("terminate: ~p", [Reason]), + %% Close all transports: + Close = + fun(S) -> + ?vlog("try close socket ~p", [S]), + (catch gen_udp:close(S)) + end, + _ = [Close(Socket) || #transport{socket = Socket} <- Transports], + %% Stop IR GC timer irgc_stop(IrGcRef), %% Close logs do_close_log(Log), |