From 756ca198e86a0b764344938037a5cbef40dbede6 Mon Sep 17 00:00:00 2001 From: Maksym Sobolyev Date: Fri, 25 Oct 2024 12:21:36 -0700 Subject: [PATCH] Make sure session is locked while processing cancel. --- sippy/ua.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sippy/ua.go b/sippy/ua.go index 0712880..16fc587 100644 --- a/sippy/ua.go +++ b/sippy/ua.go @@ -222,9 +222,15 @@ REQ_LOOP: if self.pr_rel { t.SetPrackCBs(self.RecvPRACK, disc_fn) } + cancel_cb := self.state.RecvCancel + cancel_fn := func(rtime *sippy_time.MonoTime, req sippy_types.SipRequest) { + self.session_lock.Lock() + cancel_cb(rtime, req) + self.session_lock.Unlock() + } return &sippy_types.Ua_context{ Response : nil, - CancelCB : self.state.RecvCancel, + CancelCB : cancel_fn, NoAckCB : disc_fn, } } else {