summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--toxav/msi.c10
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 }