Commit d28b6fc
committed
fix(android): tear down surviving call legs on empty-metadata restart
If LMK kills only the main process, the Telecom call survives in the
:callkeep_core process (kept alive by the system server binding). The old
unconditional sticky-restart notification accidentally provided the last
hang-up handle for that leg: Hang up on the orphan notification reached
tearDownService. The empty-metadata guard removed that handle silently,
leaving the device stuck in a zombie Telecom call (new incoming calls are
treated as busy/call-waiting) with no UI to end it until the app is reopened.
Call tearDownService() in the guard branch before stopping: the zombie leg is
now cleaned up automatically instead of requiring a manual tap. It must run
before stopForeground - while the service is still foreground, the
startService toward the connection services is exempt from background-start
restrictions (both communicate() implementations are also try/catch-guarded).1 parent 97946fd commit d28b6fc
2 files changed
Lines changed: 10 additions & 1 deletion
File tree
- webtrit_callkeep_android/android/src
- main/kotlin/com/webtrit/callkeep/services/services/active_call
- test/kotlin/com/webtrit/callkeep/services/services/active_call
Lines changed: 9 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
83 | | - | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
84 | 92 | | |
85 | 93 | | |
86 | 94 | | |
| |||
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| 32 | + | |
32 | 33 | | |
33 | 34 | | |
34 | 35 | | |
| |||
0 commit comments