[svn-commits] rmudgett: branch rmudgett/cel_accountcode r416658 - /team/rmudgett/cel_accoun...
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Wed Jun 18 17:40:33 CDT 2014
Author: rmudgett
Date: Wed Jun 18 17:40:26 2014
New Revision: 416658
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=416658
Log:
accountcode propagation: Fix local channel accountcode propagation with the CHANNEL function.
* Fix CHANNEL function accountcode/peeraccount crossover propagation to
the other local channel.
Modified:
team/rmudgett/cel_accountcode/main/core_unreal.c
Modified: team/rmudgett/cel_accountcode/main/core_unreal.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/cel_accountcode/main/core_unreal.c?view=diff&rev=416658&r1=416657&r2=416658
==============================================================================
--- team/rmudgett/cel_accountcode/main/core_unreal.c (original)
+++ team/rmudgett/cel_accountcode/main/core_unreal.c Wed Jun 18 17:40:26 2014
@@ -101,6 +101,7 @@
struct ast_unreal_pvt *p;
struct ast_channel *otherchan = NULL;
ast_chan_write_info_t *write_info;
+ char *info_data;
if (option != AST_OPTION_CHANNEL_WRITE) {
return -1;
@@ -113,10 +114,19 @@
return -1;
}
- if (!strcmp(write_info->function, "CHANNEL")
- && !strncasecmp(write_info->data, "hangup_handler_", 15)) {
- /* Block CHANNEL(hangup_handler_xxx) writes to the other unreal channel. */
- return 0;
+ info_data = write_info->data;
+ if (!strcmp(write_info->function, "CHANNEL")) {
+ if (!strncasecmp(info_data, "hangup_handler_", 15)) {
+ /* Block CHANNEL(hangup_handler_xxx) writes to the other unreal channel. */
+ return 0;
+ }
+
+ /* Crossover the accountcode and peeraccount to cross the unreal bridge. */
+ if (!strcasecmp(info_data, "accountcode")) {
+ info_data = "peeraccount";
+ } else if (!strcasecmp(info_data, "peeraccount")) {
+ info_data = "accountcode";
+ }
}
/* get the tech pvt */
@@ -141,7 +151,7 @@
ao2_unlock(p);
ast_channel_lock(otherchan);
- res = write_info->write_fn(otherchan, write_info->function, write_info->data, write_info->value);
+ res = write_info->write_fn(otherchan, write_info->function, info_data, write_info->value);
ast_channel_unlock(otherchan);
setoption_cleanup:
@@ -654,13 +664,13 @@
ast_party_dialed_copy(ast_channel_dialed(semi2), ast_channel_dialed(semi1));
- /* Crossover the CallerID and conected-line to cross the local bridge. */
+ /* Crossover the CallerID and conected-line to cross the unreal bridge. */
ast_connected_line_copy_to_caller(ast_channel_caller(semi2), ast_channel_connected(semi1));
ast_connected_line_copy_from_caller(ast_channel_connected(semi2), ast_channel_caller(semi1));
ast_channel_language_set(semi2, ast_channel_language(semi1));
- /* Crossover the accountcode and peeraccount to cross the local bridge. */
+ /* Crossover the accountcode and peeraccount to cross the unreal bridge. */
ast_channel_accountcode_set(semi2, ast_channel_peeraccount(semi1));
ast_channel_peeraccount_set(semi2, ast_channel_accountcode(semi1));
More information about the svn-commits
mailing list