diff options
author | Micael Karlberg <bmk@erlang.org> | 2022-12-02 19:58:53 +0100 |
---|---|---|
committer | Micael Karlberg <bmk@erlang.org> | 2022-12-02 19:58:53 +0100 |
commit | 7b8e3e157edf0f4bfbc93eb7265b1f1986171097 (patch) | |
tree | 7dc213a2c0f1a75ff7e3d7eb925159bdf5e814b9 /lib/snmp | |
parent | 484b3bb9668054854c6fb2c0682e629d75d04507 (diff) | |
download | erlang-7b8e3e157edf0f4bfbc93eb7265b1f1986171097.tar.gz |
[snmp|agent] Add explicit socket(s) close when terminating net-if
OTP-18352
Diffstat (limited to 'lib/snmp')
-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), |