[asterisk-commits] oej: branch oej/earlyrtpfix r47926 - in
/team/oej/earlyrtpfix: apps/ channels...
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Wed Nov 22 05:43:53 MST 2006
Author: oej
Date: Wed Nov 22 06:43:52 2006
New Revision: 47926
URL: http://svn.digium.com/view/asterisk?view=rev&rev=47926
Log:
Peeking into the peer so that we can generate a proper 200 OK based on the peer's capabilities,
not our capabilities. The current behaviour breaks direct RTP setups.
Modified:
team/oej/earlyrtpfix/apps/app_dial.c
team/oej/earlyrtpfix/channels/chan_sip.c
team/oej/earlyrtpfix/include/asterisk/channel.h
Modified: team/oej/earlyrtpfix/apps/app_dial.c
URL: http://svn.digium.com/view/asterisk/team/oej/earlyrtpfix/apps/app_dial.c?view=diff&rev=47926&r1=47925&r2=47926
==============================================================================
--- team/oej/earlyrtpfix/apps/app_dial.c (original)
+++ team/oej/earlyrtpfix/apps/app_dial.c Wed Nov 22 06:43:52 2006
@@ -579,6 +579,8 @@
DIAL_NOFORWARDHTML);
ast_copy_string(c->dialcontext, "", sizeof(c->dialcontext));
ast_copy_string(c->exten, "", sizeof(c->exten));
+ /* Make sure the caller is aware of the formats of the callee */
+ in->peernativeformats = c->nativeformats;
/* Setup RTP early bridge if appropriate */
ast_rtp_early_bridge(in, peer);
}
Modified: team/oej/earlyrtpfix/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/oej/earlyrtpfix/channels/chan_sip.c?view=diff&rev=47926&r1=47925&r2=47926
==============================================================================
--- team/oej/earlyrtpfix/channels/chan_sip.c (original)
+++ team/oej/earlyrtpfix/channels/chan_sip.c Wed Nov 22 06:43:52 2006
@@ -3407,8 +3407,19 @@
if (option_debug > 1)
ast_log(LOG_DEBUG,"T38State change to %d on channel %s\n", p->t38.state, ast->name);
res = transmit_response_with_t38_sdp(p, "200 OK", &p->initreq, XMIT_CRITICAL);
- } else
+ } else {
+ char buf[BUFSIZ];
+ if (option_debug > 2) {
+ if (ast->peernativeformats)
+ ast_log(LOG_DEBUG, "*** Peer native formats: %s\n", ast_getformatname_multiple(buf, sizeof(buf), ast->peernativeformats));
+ else
+ ast_log(LOG_DEBUG, "*** No peer native formats\n");
+ ast_log(LOG_DEBUG, "*** Our native formats: %s\n", ast_getformatname_multiple(buf, sizeof(buf), ast->nativeformats));
+
+ }
res = transmit_response_with_sdp(p, "200 OK", &p->initreq, XMIT_CRITICAL);
+
+ }
}
ast_mutex_unlock(&p->lock);
return res;
Modified: team/oej/earlyrtpfix/include/asterisk/channel.h
URL: http://svn.digium.com/view/asterisk/team/oej/earlyrtpfix/include/asterisk/channel.h?view=diff&rev=47926&r1=47925&r2=47926
==============================================================================
--- team/oej/earlyrtpfix/include/asterisk/channel.h (original)
+++ team/oej/earlyrtpfix/include/asterisk/channel.h Wed Nov 22 06:43:52 2006
@@ -419,6 +419,7 @@
struct ast_trans_pvt *readtrans; /*!< Read translation path */
int rawreadformat; /*!< Raw read format */
int rawwriteformat; /*!< Raw write format */
+ int peernativeformats; /*!< If we have a bridged peer, this is their formats */
struct ast_channel_spy_list *spies; /*!< Chan Spy stuff */
struct ast_channel_whisper_buffer *whisper; /*!< Whisper Paging buffer */
More information about the asterisk-commits
mailing list