[Asterisk-code-review] res rtp asterisk: Fix mapping of pjsip's ICE roles to ours (asterisk[13])
Joshua Colp
asteriskteam at digium.com
Wed Jul 26 17:28:30 CDT 2017
Joshua Colp has submitted this change and it was merged. ( https://gerrit.asterisk.org/6089 )
Change subject: res_rtp_asterisk: Fix mapping of pjsip's ICE roles to ours
......................................................................
res_rtp_asterisk: Fix mapping of pjsip's ICE roles to ours
Change-Id: Ia578ede1a55b21014581793992a429441903278b
---
M res/res_rtp_asterisk.c
1 file changed, 35 insertions(+), 3 deletions(-)
Approvals:
Richard Mudgett: Looks good to me, but someone else must approve
Matthew Fredrickson: Looks good to me, approved
Joshua Colp: Approved for Submit
diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c
index e521756..a93bb77 100644
--- a/res/res_rtp_asterisk.c
+++ b/res/res_rtp_asterisk.c
@@ -678,6 +678,37 @@
}
}
+static void ast2pj_rtp_ice_role(enum ast_rtp_ice_role ast_role, enum pj_ice_sess_role *pj_role)
+{
+ switch (ast_role) {
+ case AST_RTP_ICE_ROLE_CONTROLLED:
+ *pj_role = PJ_ICE_SESS_ROLE_CONTROLLED;
+ break;
+ case AST_RTP_ICE_ROLE_CONTROLLING:
+ *pj_role = PJ_ICE_SESS_ROLE_CONTROLLING;
+ break;
+ }
+}
+
+static void pj2ast_rtp_ice_role(enum pj_ice_sess_role pj_role, enum ast_rtp_ice_role *ast_role)
+{
+ switch (pj_role) {
+ case PJ_ICE_SESS_ROLE_CONTROLLED:
+ *ast_role = AST_RTP_ICE_ROLE_CONTROLLED;
+ return;
+ case PJ_ICE_SESS_ROLE_CONTROLLING:
+ *ast_role = AST_RTP_ICE_ROLE_CONTROLLING;
+ return;
+ case PJ_ICE_SESS_ROLE_UNKNOWN:
+ /* Don't change anything */
+ return;
+ default:
+ /* If we aren't explicitly handling something, it's a bug */
+ ast_assert(0);
+ return;
+ }
+}
+
/*! \pre instance is locked */
static int ice_reset_session(struct ast_rtp_instance *instance)
{
@@ -694,8 +725,9 @@
res = ice_create(instance, &rtp->ice_original_rtp_addr, rtp->ice_port, 1);
if (!res) {
/* Use the current expected role for the ICE session */
- pj_ice_sess_change_role(rtp->ice->real_ice, rtp->role == AST_RTP_ICE_ROLE_CONTROLLED ?
- PJ_ICE_SESS_ROLE_CONTROLLED : PJ_ICE_SESS_ROLE_CONTROLLING);
+ enum pj_ice_sess_role role = PJ_ICE_SESS_ROLE_UNKNOWN;
+ ast2pj_rtp_ice_role(rtp->role, &role);
+ pj_ice_sess_change_role(rtp->ice->real_ice, role);
}
/* If we only have one component now, and we previously set up TURN for RTCP,
@@ -767,7 +799,7 @@
ao2_cleanup(rtp->ice_proposed_remote_candidates);
rtp->ice_proposed_remote_candidates = NULL;
/* If this ICE session is being preserved then go back to the role it currently is */
- rtp->role = rtp->ice->real_ice->role;
+ pj2ast_rtp_ice_role(rtp->ice->real_ice->role, &rtp->role);
return;
}
--
To view, visit https://gerrit.asterisk.org/6089
To unsubscribe, visit https://gerrit.asterisk.org/settings
Gerrit-Project: asterisk
Gerrit-Branch: 13
Gerrit-MessageType: merged
Gerrit-Change-Id: Ia578ede1a55b21014581793992a429441903278b
Gerrit-Change-Number: 6089
Gerrit-PatchSet: 7
Gerrit-Owner: Sean Bright <sean.bright at gmail.com>
Gerrit-Reviewer: Jenkins2
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Matthew Fredrickson <creslin at digium.com>
Gerrit-Reviewer: Richard Mudgett <rmudgett at digium.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20170726/208a1b70/attachment.html>
More information about the asterisk-code-review
mailing list