diff options
author | automerge <automerge@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-06-19 17:29:28 +0000 |
---|---|---|
committer | automerge <automerge@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-06-19 17:29:28 +0000 |
commit | b54d09e9a3779b7878ec0898e8467300f4996b68 (patch) | |
tree | 5d087aa274b4976191571f66ade0c2a215925ee1 | |
parent | 55468a7460db55ec39f37864ce41ce7636429466 (diff) |
automerge commit
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2-netsec@70043 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | channel.c | 6 | ||||
-rw-r--r-- | channels/chan_sip.c | 5 | ||||
-rw-r--r-- | rtp.c | 9 |
3 files changed, 19 insertions, 1 deletions
@@ -3596,6 +3596,12 @@ enum ast_bridge_result ast_channel_bridge(struct ast_channel *c0, struct ast_cha break; } + /* See if the BRIDGEPEER variable needs to be updated */ + if (!ast_strlen_zero(pbx_builtin_getvar_helper(c0, "BRIDGEPEER"))) + pbx_builtin_setvar_helper(c0, "BRIDGEPEER", c1->name); + if (!ast_strlen_zero(pbx_builtin_getvar_helper(c1, "BRIDGEPEER"))) + pbx_builtin_setvar_helper(c1, "BRIDGEPEER", c0->name); + if (c0->tech->bridge && (config->timelimit == 0) && (c0->tech->bridge == c1->tech->bridge) && diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 2d5f4b296..0e180429b 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -6644,6 +6644,8 @@ static int cb_extensionstate(char *context, char* exten, int state, void *data) { struct sip_pvt *p = data; + ast_mutex_lock(&p->lock); + switch(state) { case AST_EXTENSION_DEACTIVATED: /* Retry after a while */ case AST_EXTENSION_REMOVED: /* Extension is gone */ @@ -6663,6 +6665,9 @@ static int cb_extensionstate(char *context, char* exten, int state, void *data) if (option_verbose > 1) ast_verbose(VERBOSE_PREFIX_1 "Extension Changed %s new state %s for Notify User %s\n", exten, ast_extension_state2str(state), p->username); + + ast_mutex_unlock(&p->lock); + return 0; } @@ -441,6 +441,7 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp) int padding; int mark; int ext; + int cc; int x; char iabuf[INET_ADDRSTRLEN]; unsigned int ssrc; @@ -501,6 +502,7 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp) padding = seqno & (1 << 29); mark = seqno & (1 << 23); ext = seqno & (1 << 28); + cc = (seqno & 0xF000000) >> 24; seqno &= 0xffff; timestamp = ntohl(rtpheader[1]); ssrc = ntohl(rtpheader[2]); @@ -518,10 +520,15 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp) res -= rtp->rawdata[AST_FRIENDLY_OFFSET + res - 1]; } + if (cc) { + /* CSRC fields present */ + hdrlen += cc*4; + } + if (ext) { /* RTP Extension present */ + hdrlen += (ntohl(rtpheader[hdrlen/4]) & 0xffff) << 2; hdrlen += 4; - hdrlen += (ntohl(rtpheader[3]) & 0xffff) << 2; } if (res < hdrlen) { |