diff options
-rw-r--r-- | toxav/msi.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/toxav/msi.c b/toxav/msi.c index 65e45a92..fda41d0c 100644 --- a/toxav/msi.c +++ b/toxav/msi.c | |||
@@ -1289,7 +1289,13 @@ int msi_kill ( MSISession *session ) | |||
1289 | /*for ( ; _it < session->calls[idx]->peer_count; _it++ ) | 1289 | /*for ( ; _it < session->calls[idx]->peer_count; _it++ ) |
1290 | * FIXME: will not work on multiple peers, must cancel call for all peers | 1290 | * FIXME: will not work on multiple peers, must cancel call for all peers |
1291 | */ | 1291 | */ |
1292 | msi_cancel ( session, idx, session->calls[idx]->peers [_it], "MSI session terminated!" ); | 1292 | MSICallState state = session->calls[idx]->state; |
1293 | |||
1294 | if (state == msi_CallInviting) { | ||
1295 | msi_cancel( session, idx, session->calls[idx]->peers [_it], "MSI session terminated!" ); | ||
1296 | } else { | ||
1297 | msi_stopcall(session, idx); | ||
1298 | } | ||
1293 | } | 1299 | } |
1294 | 1300 | ||
1295 | free(((TimerHandler *)session->timer_handler)->timers); | 1301 | free(((TimerHandler *)session->timer_handler)->timers); |
@@ -1438,7 +1444,7 @@ int msi_cancel ( MSISession *session, int32_t call_index, uint32_t peer, const c | |||
1438 | } | 1444 | } |
1439 | 1445 | ||
1440 | if ( session->calls[call_index]->state != msi_CallInviting ) { | 1446 | if ( session->calls[call_index]->state != msi_CallInviting ) { |
1441 | LOGGER_ERROR("Call is in invalid state!"); | 1447 | LOGGER_ERROR("Call is in invalid state: %u", session->calls[call_index]->state); |
1442 | pthread_mutex_unlock(session->mutex); | 1448 | pthread_mutex_unlock(session->mutex); |
1443 | return msi_ErrorInvalidState; | 1449 | return msi_ErrorInvalidState; |
1444 | } | 1450 | } |