diff options
author | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2017-03-06 09:50:26 +0100 |
---|---|---|
committer | Holger Freyther <holger@freyther.de> | 2017-03-06 21:10:07 +0000 |
commit | 068f54795495d478e51d40dfcd390ce005933f9d (patch) | |
tree | f3ae193ca52cb8385487b812117deab93449ef7f | |
parent | 7166d0f448eae451b1a6287b522c0fc82387b05b (diff) |
call: Fix call release handling on mncc connection loss
The app_mncc_disconnected will be called when the MNCC socket is down
and lead to all calls being released. It directly released the call but
did not stop the MNCC CMD timer. Go through the call release callback.
==3618== at 0x804A18A: app_mncc_disconnected (app.c:49)
==3618== by 0x804B52D: close_connection (mncc.c:255)
This lead to the timer not being removed:
==3593== Invalid read of size 4
==3593== at 0x4305D42: rb_first (rbtree.c:294)
==3593== by 0x42FCB37: osmo_timers_update (timer.c:220)
==3593== by 0x804D1D5: evpoll (evpoll.c:89)
==3593== by 0x4205053: ??? (in /lib/i386-linux-gnu/libglib-2.0.so.0.4200.1)
==3593== by 0x4205478: g_main_loop_run (in /lib/i386-linux-gnu/libglib-2.0.so.0.4200.1)
==3593== by 0x8049AA6: main (main.c:171)
==3593== Address 0x47f3380 is 232 bytes inside a block of size 272 free'd
==3593== at 0x402A3A8: free (vg_replace_malloc.c:473)
==3593== by 0x42E7FD1: ??? (in /usr/lib/i386-linux-gnu/libtalloc.so.2.1.5)
==3593== by 0x804A3C4: call_leg_release (call.c:83)
==3593== by 0x804A188: app_mncc_disconnected (app.c:48)
==3593== by 0x804B52D: close_connection (mncc.c:255)
==3593== by 0x804BCFA: mncc_rtp_send.constprop.13 (mncc.c:145)
==3593== by 0x804CC86: check_setup (mncc.c:435)
==3593== by 0x804CC86: mncc_data (mncc.c:795)
==3593== by 0x42FCF94: osmo_fd_disp_fds (select.c:167)
==3593== by 0x804D1F2: evpoll (evpoll.c:92)
==3593== by 0x4205053: ??? (in /lib/i386-linux-gnu/libglib-2.0.so.0.4200.1)
==3593== by 0x4205478: g_main_loop_run (in /lib/i386-linux-gnu/libglib-2.0.so.0.4200.1)
==3593== by 0x8049AA6: main (main.c:171)
Change-Id: I2e8e14b3983f84c9be046bbd96bbcd1e5766993e
-rw-r--r-- | src/app.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -45,9 +45,9 @@ void app_mncc_disconnected(struct mncc_connection *conn) LOGP(DAPP, LOGL_NOTICE, "Going to release call(%u) due MNCC.\n", call->id); if (call->initial) - call_leg_release(call->initial); + call->initial->release_call(call->initial); if (call->remote) - call_leg_release(call->remote); + call->remote->release_call(call->remote); } } |