summaryrefslogtreecommitdiffstats
path: root/src/phone.cpp
Commit message (Collapse)AuthorAgeLines
* Merge pull request #180 from fbriere/issue/165-deadlocks-complexLuboš Doležel2020-02-23-4/+4
|\ | | | | Introduce read-write-update locks and guards to prevent deadlocks
| * Fix "REFER declined" deadlockFrédéric Brière2019-12-27-1/+1
| | | | | | | | | | | | | | | | | | This occurs when the user declines an incoming call transfer request, due to the following path: - recvd_refer_permission() acquires a read lock over lines_mtx - move_releasing_lines_to_background() is called - A write lock over lines_mtx is acquired
| * Fix "Transfer with consultation without Replaces" deadlockFrédéric Brière2019-12-27-1/+1
| | | | | | | | | | | | | | | | | | | | | | This occurs when performing a consult transfer if the target does not support the Replaces extension, due to the following path: - refer() acquires a read lock over lines_mtx - refer_consultation() is called - A write lock over lines_mtx is acquired Closes #118
| * Fix "NOTIFY received when line is idle" deadlockFrédéric Brière2019-12-27-1/+1
| | | | | | | | | | | | | | | | | | | | This can easily be triggered by starting a blind transfer, and hanging up before the other end has accepted/rejected it, due to the following path: - recvd_notify() acquires a read lock on lines_mtx - cleanup_dead_lines() is called - A write lock on lines_mtx is acquired
| * Fix "INVITE with Replaces header" deadlockFrédéric Brière2019-12-27-1/+1
| | | | | | | | | | | | | | | | | | This occurs on reception of an INVITE with a Replaces header, due to the following path: - recvd_invite() acquires a read lock on lines_mtx - recvd_initial_invite() is called - A write lock over lines_mtx is acquired
* | Merge pull request #150 from fbriere/issue/88-mutex-lock-failedLuboš Doležel2020-02-23-2/+6
|\ \ | | | | | | Prevent recursive locking of phone_users_mtx in add_phone_user()
| * | Prevent recursive locking of phone_users_mtx in add_phone_user()Frédéric Brière2019-07-03-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | When encountering two users with the same contact name, attempting to differentiate them using USER_HOST(), a.k.a. get_ip_sip(), would result in EDEADLK since phone_users_mtx was already locked by add_phone_user(). Closes #88
* | | Merge pull request #166 from fbriere/issue/165-deadlocks-simpleLuboš Doležel2020-02-23-2/+0
|\ \ \ | | |/ | |/| Simple fixes for two deadlocks
| * | Remove duplicate mutex lock in `t_phone::end_call()`Frédéric Brière2019-10-02-2/+0
| |/ | | | | | | | | A write lock on `lines_mtx` has already been acquired at the beginning of `end_call()`.
* / Fix spelling errorsJose Riha2020-02-20-1/+1
|/
* Replace (old) FSF postal address with URL in header filesFrédéric Brière2016-10-02-2/+1
| | | | | | Wording copied from https://www.gnu.org/licenses/gpl-howto.en.html Fixes #25, fixes #71
* Fix a crash when using File -> Change User... (fixes #34)Lubos Dolezel2016-01-03-1/+0
|
* Crash fixesLubos Dolezel2015-07-28-1/+0
|
* Introduce a separate 3-way call mutex (#17)Lubos Dolezel2015-07-07-23/+7
|
* Partial lock rework in t_phone (#17). If the app starts crashing or ↵Lubos Dolezel2015-07-07-159/+167
| | | | freezing, this commit is probably to blame.
* initial checkinMichal Kubecek2015-04-13-0/+3562
Check in contents of upstream 1.4.2 tarball, exclude generated files.