diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2014-06-12 09:27:32 +0400 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2014-06-12 09:30:04 +0400 |
commit | 7892b72bcbc6231fe37a313c53505a4d01fbac31 (patch) | |
tree | 23c0b7e1b57969d40f33f7265d5f38135fbcddc1 /src | |
parent | Merge pull request #237 from weiss/log-config-path (diff) |
Don't forget to close socket of timed out flow
Diffstat (limited to 'src')
-rw-r--r-- | src/mod_sip_registrar.erl | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/mod_sip_registrar.erl b/src/mod_sip_registrar.erl index 7233d053b..9f5243603 100644 --- a/src/mod_sip_registrar.erl +++ b/src/mod_sip_registrar.erl @@ -321,6 +321,11 @@ delete_expired_session(US, TRef) -> fun(#sip_session{reg_tref = T1, flow_tref = T2} = Session) when T1 == TRef; T2 == TRef -> + if T2 /= undefined -> + close_socket(Session); + true -> + ok + end, delete_session(Session); (_) -> ok @@ -518,6 +523,13 @@ set_monitor_and_timer(#sip_session{socket = #sip_socket{type = Type, set_timer(#sip_session{us = US}, Timeout) -> erlang:start_timer(Timeout * 1000, self(), US). +close_socket(#sip_session{socket = SIPSocket}) -> + if SIPSocket#sip_socket.type /= udp -> + esip_socket:close(SIPSocket); + true -> + ok + end. + delete_session(#sip_session{reg_tref = RegTRef, flow_tref = FlowTRef, conn_mref = MRef} = Session) -> |