[asterisk-commits] oej: branch oej/pinedanish-copybridgeflags-1.8 r363317 - /team/oej/pinedanish...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Tue Apr 24 03:25:13 CDT 2012
Author: oej
Date: Tue Apr 24 03:25:08 2012
New Revision: 363317
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=363317
Log:
The automerge failed in some files that this patch hasn't touched.
This happens more frequently nowadays. Hmm.
Modified:
team/oej/pinedanish-copybridgeflags-1.8/main/devicestate.c
team/oej/pinedanish-copybridgeflags-1.8/main/features.c
team/oej/pinedanish-copybridgeflags-1.8/main/rtp_engine.c
Modified: team/oej/pinedanish-copybridgeflags-1.8/main/devicestate.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/pinedanish-copybridgeflags-1.8/main/devicestate.c?view=diff&rev=363317&r1=363316&r2=363317
==============================================================================
--- team/oej/pinedanish-copybridgeflags-1.8/main/devicestate.c (original)
+++ team/oej/pinedanish-copybridgeflags-1.8/main/devicestate.c Tue Apr 24 03:25:08 2012
@@ -732,91 +732,39 @@
void ast_devstate_aggregate_init(struct ast_devstate_aggregate *agg)
{
memset(agg, 0, sizeof(*agg));
-
- agg->all_unknown = 1;
- agg->all_unavail = 1;
- agg->all_busy = 1;
- agg->all_free = 1;
+ agg->state = AST_DEVICE_INVALID;
}
void ast_devstate_aggregate_add(struct ast_devstate_aggregate *agg, enum ast_device_state state)
{
- switch (state) {
- case AST_DEVICE_NOT_INUSE:
- agg->all_unknown = 0;
- agg->all_unavail = 0;
- agg->all_busy = 0;
- break;
- case AST_DEVICE_INUSE:
- agg->in_use = 1;
- agg->all_unavail = 0;
- agg->all_free = 0;
- agg->all_unknown = 0;
- break;
- case AST_DEVICE_RINGING:
- agg->ring = 1;
- agg->all_unavail = 0;
- agg->all_free = 0;
- agg->all_unknown = 0;
- break;
- case AST_DEVICE_RINGINUSE:
- agg->in_use = 1;
- agg->ring = 1;
- agg->all_unavail = 0;
- agg->all_free = 0;
- agg->all_unknown = 0;
- break;
- case AST_DEVICE_ONHOLD:
- agg->all_unknown = 0;
- agg->all_unavail = 0;
- agg->all_free = 0;
- agg->on_hold = 1;
- break;
- case AST_DEVICE_BUSY:
- agg->all_unknown = 0;
- agg->all_unavail = 0;
- agg->all_free = 0;
- agg->busy = 1;
- agg->in_use = 1;
- break;
- case AST_DEVICE_UNAVAILABLE:
- agg->all_unknown = 0;
- case AST_DEVICE_INVALID:
- agg->all_busy = 0;
- agg->all_free = 0;
- break;
- case AST_DEVICE_UNKNOWN:
- agg->all_busy = 0;
- agg->all_free = 0;
- break;
- case AST_DEVICE_TOTAL: /* not a device state, included for completeness. */
- break;
- }
-}
-
+ static enum ast_device_state state_order[] = {
+ 1, /* AST_DEVICE_UNKNOWN */
+ 3, /* AST_DEVICE_NOT_INUSE */
+ 6, /* AST_DEVICE_INUSE */
+ 7, /* AST_DEVICE_BUSY */
+ 0, /* AST_DEVICE_INVALID */
+ 2, /* AST_DEVICE_UNAVAILABLE */
+ 5, /* AST_DEVICE_RINGING */
+ 8, /* AST_DEVICE_RINGINUSE */
+ 4, /* AST_DEVICE_ONHOLD */
+ };
+
+ if (state == AST_DEVICE_RINGING) {
+ agg->ringing = 1;
+ } else if (state == AST_DEVICE_INUSE || state == AST_DEVICE_ONHOLD || state == AST_DEVICE_BUSY) {
+ agg->inuse = 1;
+ }
+
+ if (agg->ringing && agg->inuse) {
+ agg->state = AST_DEVICE_RINGINUSE;
+ } else if (state_order[state] > state_order[agg->state]) {
+ agg->state = state;
+ }
+}
enum ast_device_state ast_devstate_aggregate_result(struct ast_devstate_aggregate *agg)
{
- if (agg->all_free)
- return AST_DEVICE_NOT_INUSE;
- if ((agg->in_use || agg->on_hold) && agg->ring)
- return AST_DEVICE_RINGINUSE;
- if (agg->ring)
- return AST_DEVICE_RINGING;
- if (agg->busy)
- return AST_DEVICE_BUSY;
- if (agg->in_use)
- return AST_DEVICE_INUSE;
- if (agg->on_hold)
- return AST_DEVICE_ONHOLD;
- if (agg->all_busy)
- return AST_DEVICE_BUSY;
- if (agg->all_unknown)
- return AST_DEVICE_UNKNOWN;
- if (agg->all_unavail)
- return AST_DEVICE_UNAVAILABLE;
-
- return AST_DEVICE_NOT_INUSE;
+ return agg->state;
}
int ast_enable_distributed_devstate(void)
Modified: team/oej/pinedanish-copybridgeflags-1.8/main/features.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/pinedanish-copybridgeflags-1.8/main/features.c?view=diff&rev=363317&r1=363316&r2=363317
==============================================================================
--- team/oej/pinedanish-copybridgeflags-1.8/main/features.c (original)
+++ team/oej/pinedanish-copybridgeflags-1.8/main/features.c Tue Apr 24 03:25:08 2012
@@ -1383,7 +1383,6 @@
struct parkeduser *pu = args->pu;
const char *event_from; /*!< Channel name that is parking the call. */
char app_data[AST_MAX_EXTENSION + AST_MAX_CONTEXT];
- char app_data[AST_MAX_EXTENSION + AST_MAX_CONTEXT];
if (pu == NULL) {
args->pu = pu = park_space_reserve(chan, peer, args);
@@ -4960,10 +4959,6 @@
{
struct ast_park_call_args args = { 0, };
struct ast_flags flags = { 0 };
- struct ast_park_call_args args = {
- .orig_chan_name = orig_chan_name,
- };
- struct ast_flags flags = { 0 };
char orig_exten[AST_MAX_EXTENSION];
int orig_priority;
int res;
Modified: team/oej/pinedanish-copybridgeflags-1.8/main/rtp_engine.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/pinedanish-copybridgeflags-1.8/main/rtp_engine.c?view=diff&rev=363317&r1=363316&r2=363317
==============================================================================
--- team/oej/pinedanish-copybridgeflags-1.8/main/rtp_engine.c (original)
+++ team/oej/pinedanish-copybridgeflags-1.8/main/rtp_engine.c Tue Apr 24 03:25:08 2012
@@ -100,6 +100,7 @@
{{1, AST_FORMAT_ADPCM}, "audio", "DVI4", 8000},
{{1, AST_FORMAT_SLINEAR}, "audio", "L16", 8000},
{{1, AST_FORMAT_SLINEAR16}, "audio", "L16", 16000},
+ {{1, AST_FORMAT_SLINEAR16}, "audio", "L16-256", 16000},
{{1, AST_FORMAT_LPC10}, "audio", "LPC", 8000},
{{1, AST_FORMAT_G729A}, "audio", "G729", 8000},
{{1, AST_FORMAT_G729A}, "audio", "G729A", 8000},
@@ -889,7 +890,8 @@
(fr->subclass.integer == AST_CONTROL_UNHOLD) ||
(fr->subclass.integer == AST_CONTROL_VIDUPDATE) ||
(fr->subclass.integer == AST_CONTROL_SRCUPDATE) ||
- (fr->subclass.integer == AST_CONTROL_T38_PARAMETERS)) {
+ (fr->subclass.integer == AST_CONTROL_T38_PARAMETERS) ||
+ (fr->subclass.integer == AST_CONTROL_UPDATE_RTP_PEER)) {
/* If we are going on hold, then break callback mode and P2P bridging */
if (fr->subclass.integer == AST_CONTROL_HOLD) {
if (instance0->engine->local_bridge) {
@@ -910,7 +912,10 @@
instance0->bridged = instance1;
instance1->bridged = instance0;
}
- ast_indicate_data(other, fr->subclass.integer, fr->data.ptr, fr->datalen);
+ /* Since UPDATE_BRIDGE_PEER is only used by the bridging code, don't forward it */
+ if (fr->subclass.integer != AST_CONTROL_UPDATE_RTP_PEER) {
+ ast_indicate_data(other, fr->subclass.integer, fr->data.ptr, fr->datalen);
+ }
ast_frfree(fr);
} else if (fr->subclass.integer == AST_CONTROL_CONNECTED_LINE) {
if (ast_channel_connected_line_macro(who, other, fr, other == c0, 1)) {
@@ -1443,6 +1448,10 @@
ast_rtp_codecs_payloads_copy(&tinstance0->codecs, &tinstance1->codecs, tinstance1);
}
+ if (glue0->update_peer(c0, instance1, vinstance1, tinstance1, codec1, 0)) {
+ ast_log(LOG_WARNING, "Channel '%s' failed to setup early bridge to '%s'\n", c0->name, c1 ? c1->name : "<unspecified>");
+ }
+
res = 0;
done:
@@ -1777,17 +1786,24 @@
return res_srtp && res_srtp_policy;
}
-int ast_rtp_instance_add_srtp_policy(struct ast_rtp_instance *instance, struct ast_srtp_policy *policy)
-{
+int ast_rtp_instance_add_srtp_policy(struct ast_rtp_instance *instance, struct ast_srtp_policy *remote_policy, struct ast_srtp_policy *local_policy)
+{
+ int res = 0;
+
if (!res_srtp) {
return -1;
}
if (!instance->srtp) {
- return res_srtp->create(&instance->srtp, instance, policy);
+ res = res_srtp->create(&instance->srtp, instance, remote_policy);
} else {
- return res_srtp->add_stream(instance->srtp, policy);
- }
+ res = res_srtp->replace(&instance->srtp, instance, remote_policy);
+ }
+ if (!res) {
+ res = res_srtp->add_stream(instance->srtp, local_policy);
+ }
+
+ return res;
}
struct ast_srtp *ast_rtp_instance_get_srtp(struct ast_rtp_instance *instance)
More information about the asterisk-commits
mailing list