From: <do...@us...> - 2008-11-10 20:21:51
|
Revision: 1454 http://iaxclient.svn.sourceforge.net/iaxclient/?rev=1454&view=rev Author: dohpaz Date: 2008-11-10 20:21:46 +0000 (Mon, 10 Nov 2008) Log Message: ----------- Add ability to dump calls with a reason. Modified Paths: -------------- branches/team/elbunce/iaxclient/lib/iaxclient.h branches/team/elbunce/iaxclient/lib/iaxclient_lib.c Modified: branches/team/elbunce/iaxclient/lib/iaxclient.h =================================================================== --- branches/team/elbunce/iaxclient/lib/iaxclient.h 2008-11-10 19:32:50 UTC (rev 1453) +++ branches/team/elbunce/iaxclient/lib/iaxclient.h 2008-11-10 20:21:46 UTC (rev 1454) @@ -857,6 +857,13 @@ EXPORT void iaxc_dump_call_number( int callNo ); /*! + Hangs up and frees call \a callNo with \a reason + \param callNo The call number to reject. + \param reason The reason the call was dumped +*/ +EXPORT void iaxc_dump_call_number_ex( int callNo, const char* reason ); + +/*! Hangs up and frees the currently selected call. */ EXPORT void iaxc_dump_call(void); @@ -878,8 +885,9 @@ /*! Rejects the incoming call \a callNo. \param callNo The call number to reject. + \param reason */ -EXPORT void iaxc_reject_call_number_ex(int callNo, const char* reason); +EXPORT void iaxc_reject_call_number_ex( int callNo, const char* reason ); /*! Sends a DTMF digit to the currently selected call. Modified: branches/team/elbunce/iaxclient/lib/iaxclient_lib.c =================================================================== --- branches/team/elbunce/iaxclient/lib/iaxclient_lib.c 2008-11-10 19:32:50 UTC (rev 1453) +++ branches/team/elbunce/iaxclient/lib/iaxclient_lib.c 2008-11-10 20:21:46 UTC (rev 1454) @@ -113,6 +113,7 @@ static void service_network(); static int service_audio(); +static void iaxc_dump_one_call(int callNo, const char* reason); /* external global networking replacements */ static iaxc_sendto_t iaxc_sendto = (iaxc_sendto_t)sendto; @@ -675,10 +676,13 @@ EXPORT void iaxc_shutdown() { - iaxc_dump_all_calls(); + int callNo; get_iaxc_lock(); + for ( callNo = 0; callNo < max_calls; callNo++ ) + iaxc_dump_one_call(callNo, "Shutdown Call"); + if ( !test_mode ) { audio_driver.destroy(&audio_driver); @@ -1552,14 +1556,14 @@ iaxc_dump_one_call dumps \a callNo. Expects the routine calling it to have obtained the iaxc lock. */ -static void iaxc_dump_one_call(int callNo) +static void iaxc_dump_one_call(int callNo, const char* reason) { if ( ( callNo < 0 ) || ( callNo >= max_calls ) || ( calls[callNo].state == IAXC_CALL_STATE_FREE ) ) return; - iax_hangup(calls[callNo].session,"Dumped Call"); - iaxci_usermsg(IAXC_STATUS, "Hanging up call %d", callNo); + iax_hangup(calls[callNo].session, reason); + iaxci_usermsg(IAXC_STATUS, "Hanging up call %d: %s", callNo, reason); iaxc_clear_call(callNo); } @@ -1568,7 +1572,7 @@ int callNo; get_iaxc_lock(); for ( callNo = 0; callNo < max_calls; callNo++ ) - iaxc_dump_one_call(callNo); + iaxc_dump_one_call(callNo, "Dumping All Calls"); put_iaxc_lock(); } @@ -1578,17 +1582,28 @@ if ( callNo >= 0 && callNo < max_calls ) { get_iaxc_lock(); - iaxc_dump_one_call(callNo); + iaxc_dump_one_call(callNo, "Dumped Call"); put_iaxc_lock(); } } + +EXPORT void iaxc_dump_call_number_ex( int callNo, const char* reason ) +{ + if ( callNo >= 0 && callNo < max_calls ) + { + get_iaxc_lock(); + iaxc_dump_one_call(callNo, reason ? reason : "Dumped Call"); + put_iaxc_lock(); + } +} + EXPORT void iaxc_dump_call(void) { if ( selected_call >= 0 ) { get_iaxc_lock(); - iaxc_dump_one_call(selected_call); + iaxc_dump_one_call(selected_call, "Dumped Call"); put_iaxc_lock(); } } @@ -1613,7 +1628,7 @@ return; get_iaxc_lock(); - iax_reject(calls[callNo].session, reason); + iax_reject(calls[callNo].session, reason ? reason : "Call rejected manually"); iaxc_clear_call(callNo); put_iaxc_lock(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |