From: <st...@us...> - 2003-06-19 19:09:55
|
Update of /cvsroot/iaxclient/iaxclient/lib In directory sc8-pr-cvs1:/tmp/cvs-serv958 Modified Files: iaxclient.h iaxclient_lib.c Log Message: add iaxc_dump_all_calls API, for cleanup. Index: iaxclient.h =================================================================== RCS file: /cvsroot/iaxclient/iaxclient/lib/iaxclient.h,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- iaxclient.h 17 Jun 2003 22:53:27 -0000 1.13 +++ iaxclient.h 19 Jun 2003 19:09:52 -0000 1.14 @@ -100,6 +100,7 @@ void iaxc_call(char *num); void iaxc_register(char *user, char *pass, char *host); void iaxc_answer_call(int callNo); +void iaxc_dump_all_calls(void); void iaxc_dump_call(void); void iaxc_reject_call(void); void iaxc_send_dtmf(char digit); Index: iaxclient_lib.c =================================================================== RCS file: /cvsroot/iaxclient/iaxclient/lib/iaxclient_lib.c,v retrieving revision 1.24 retrieving revision 1.25 diff -u -d -r1.24 -r1.25 --- iaxclient_lib.c 18 Jun 2003 16:39:18 -0000 1.24 +++ iaxclient_lib.c 19 Jun 2003 19:09:52 -0000 1.25 @@ -252,6 +252,7 @@ void iaxc_shutdown() { MUTEXLOCK(&iaxc_lock); + iaxc_dump_all_calls(); switch (iAudioType) { case AUDIO_INTERNAL: #ifdef USE_WIN_AUDIO @@ -559,6 +560,25 @@ iaxc_do_state_callback(callNo); } +static void iaxc_dump_one_call(int callNo) +{ + if(calls[callNo].state == IAXC_CALL_STATE_FREE) return; + + iax_hangup(calls[callNo].session,"Dumped Call"); + iaxc_usermsg(IAXC_STATUS, "Hanging up call %d", callNo); + iaxc_clear_call(callNo); +} + +void iaxc_dump_all_calls(void) +{ + int callNo; + MUTEXLOCK(&iaxc_lock); + for(callNo=0; callNo<nCalls; callNo++) + iaxc_dump_one_call(callNo); + MUTEXUNLOCK(&iaxc_lock); +} + + void iaxc_dump_call(void) { int toDump = selected_call; @@ -566,9 +586,7 @@ if(toDump < 0) { iaxc_usermsg(IAXC_ERROR, "Error: tried to dump but no call selected"); } else { - iax_hangup(calls[selected_call].session,"Dumped Call"); - iaxc_usermsg(IAXC_STATUS, "Hanging up call %d", toDump); - iaxc_clear_call(toDump); + iaxc_dump_one_call(selected_call); } MUTEXUNLOCK(&iaxc_lock); } |