|
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.
|