chan_sip: Fix incorrect use of timers
authorKinsey Moore <kmoore@digium.com>
Tue, 25 Mar 2014 16:06:57 +0000 (16:06 +0000)
committerKinsey Moore <kmoore@digium.com>
Tue, 25 Mar 2014 16:06:57 +0000 (16:06 +0000)
commita4890eddfb4f98029c046f490e03e2ae9170dee7
tree6a4761189dddf9b1257d427e4845edd86616a5e8
parenteb0a982f8c485b9a205f3bcf775ded7837a0fae4
chan_sip: Fix incorrect use of timers

If update_provisional_keepalive() is called while
send_provisional_keepalive_full() is waiting on the PVT lock, then
pvt->provisional_keepalive_sched_id will be changed to a new sched_id
value by update_provisional_keepalive(), but that new sched_id then may
be overwritten with -1 by send_provisional_keepalive_full(), killing
the pvt's reference to a schedule and "leaking" the reference.

(closes issue ASTERISK-22079)
Review: https://reviewboard.asterisk.org/r/3368/
Reported by: Jamuel Starkey, Matteo, Leif Madsen, Steve Davies
Patches:
    provisional_keepalive_fix.diff uploaded by Steve Davies (license 5012)
........

Merged revisions 411088 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 411089 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 411091 from http://svn.asterisk.org/svn/asterisk/branches/12

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@411092 65c4cc65-6c06-0410-ace0-fbb531ad65f3
channels/chan_sip.c