[asterisk-commits] kmoore: branch kmoore/pjsip_dtls r394806 - in /team/kmoore/pjsip_dtls: includ...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Jul 19 13:26:09 CDT 2013


Author: kmoore
Date: Fri Jul 19 13:26:07 2013
New Revision: 394806

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=394806
Log:
Address review comments from Mark and Joshua

Modified:
    team/kmoore/pjsip_dtls/include/asterisk/res_sip_session.h
    team/kmoore/pjsip_dtls/res/res_sip.c
    team/kmoore/pjsip_dtls/res/res_sip_sdp_rtp.c
    team/kmoore/pjsip_dtls/res/res_sip_session.c

Modified: team/kmoore/pjsip_dtls/include/asterisk/res_sip_session.h
URL: http://svnview.digium.com/svn/asterisk/team/kmoore/pjsip_dtls/include/asterisk/res_sip_session.h?view=diff&rev=394806&r1=394805&r2=394806
==============================================================================
--- team/kmoore/pjsip_dtls/include/asterisk/res_sip_session.h (original)
+++ team/kmoore/pjsip_dtls/include/asterisk/res_sip_session.h Fri Jul 19 13:26:07 2013
@@ -28,8 +28,6 @@
 #include "asterisk/netsock.h"
 /* Needed for ast_sdp_srtp struct */
 #include "asterisk/sdp_srtp.h"
-/* Needed for ast_rtp_dtls_cfg struct */
-#include "asterisk/rtp_engine.h"
 
 /* Forward declarations */
 struct ast_sip_endpoint;
@@ -113,8 +111,6 @@
 	struct ast_codec_pref override_prefs;
 	/* Optional DSP, used only for inband DTMF detection if configured */
 	struct ast_dsp *dsp;
-	/*! \brief DTLS-SRTP configuration information */
-	struct ast_rtp_dtls_cfg dtls_cfg;
 	/* Whether the termination of the session should be deferred */
 	unsigned int defer_terminate:1;
 };

Modified: team/kmoore/pjsip_dtls/res/res_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/kmoore/pjsip_dtls/res/res_sip.c?view=diff&rev=394806&r1=394805&r2=394806
==============================================================================
--- team/kmoore/pjsip_dtls/res/res_sip.c (original)
+++ team/kmoore/pjsip_dtls/res/res_sip.c Fri Jul 19 13:26:07 2013
@@ -425,7 +425,7 @@
 						This option only applies if <replaceable>media_encryption</replaceable> is
 						set to <literal>dtls</literal>.
 					</para><para>
-						Many options for acceptable ciphers see link for more:
+						Many options for acceptable ciphers. See link for more:
 						http://www.openssl.org/docs/apps/ciphers.html#CIPHER_STRINGS
 					</para></description>
 				</configOption>

Modified: team/kmoore/pjsip_dtls/res/res_sip_sdp_rtp.c
URL: http://svnview.digium.com/svn/asterisk/team/kmoore/pjsip_dtls/res/res_sip_sdp_rtp.c?view=diff&rev=394806&r1=394805&r2=394806
==============================================================================
--- team/kmoore/pjsip_dtls/res/res_sip_sdp_rtp.c (original)
+++ team/kmoore/pjsip_dtls/res/res_sip_sdp_rtp.c Fri Jul 19 13:26:07 2013
@@ -546,7 +546,7 @@
 {
 	struct ast_rtp_engine_dtls *dtls;
 
-	if (!session->dtls_cfg.enabled || !session_media->rtp) {
+	if (!session->endpoint->dtls_cfg.enabled || !session_media->rtp) {
 		return -1;
 	}
 
@@ -555,8 +555,8 @@
 		return -1;
 	}
 
-	session->dtls_cfg.suite = ((session->endpoint->srtp_tag_32) ? AST_AES_CM_128_HMAC_SHA1_32 : AST_AES_CM_128_HMAC_SHA1_80);
-	if (dtls->set_configuration(session_media->rtp, &session->dtls_cfg)) {
+	session->endpoint->dtls_cfg.suite = ((session->endpoint->srtp_tag_32) ? AST_AES_CM_128_HMAC_SHA1_32 : AST_AES_CM_128_HMAC_SHA1_80);
+	if (dtls->set_configuration(session_media->rtp, &session->endpoint->dtls_cfg)) {
 		ast_log(LOG_ERROR, "Attempted to set an invalid DTLS-SRTP configuration on RTP instance '%p'\n",
 			session_media->rtp);
 		return -1;
@@ -585,42 +585,29 @@
 		value = pj_strtrim(&attr->value);
 
 		if (!pj_strcmp2(&attr->name, "setup")) {
-			RAII_VAR(char *, setup_type, ast_strndup(value->ptr, value->slen), ast_free);
-			if (!setup_type) {
-				return -1;
-			}
-
-			if (!strcasecmp(setup_type, "active")) {
+			if (!pj_stricmp2(value, "active")) {
 				dtls->set_setup(session_media->rtp, AST_RTP_DTLS_SETUP_ACTIVE);
-			} else if (!strcasecmp(setup_type, "passive")) {
+			} else if (!pj_stricmp2(value, "passive")) {
 				dtls->set_setup(session_media->rtp, AST_RTP_DTLS_SETUP_PASSIVE);
-			} else if (!strcasecmp(setup_type, "actpass")) {
+			} else if (!pj_stricmp2(value, "actpass")) {
 				dtls->set_setup(session_media->rtp, AST_RTP_DTLS_SETUP_ACTPASS);
-			} else if (!strcasecmp(setup_type, "holdconn")) {
+			} else if (!pj_stricmp2(value, "holdconn")) {
 				dtls->set_setup(session_media->rtp, AST_RTP_DTLS_SETUP_HOLDCONN);
 			} else {
-				ast_log(LOG_WARNING, "Unsupported setup attribute value '%s'\n", setup_type);
+				ast_log(LOG_WARNING, "Unsupported setup attribute value '%*s'\n", (int)value->slen, value->ptr);
 			}
 		} else if (!pj_strcmp2(&attr->name, "connection")) {
-			RAII_VAR(char *, connection_type, ast_strndup(value->ptr, value->slen), ast_free);
-			if (!connection_type) {
-				return -1;
-			}
-
-			if (!strcasecmp(connection_type, "new")) {
+			if (!pj_stricmp2(value, "new")) {
 				dtls->reset(session_media->rtp);
-			} else if (!strcasecmp(connection_type, "existing")) {
+			} else if (!pj_stricmp2(value, "existing")) {
 				/* Do nothing */
 			} else {
-				ast_log(LOG_WARNING, "Unsupported connection attribute value '%s'\n", connection_type);
+				ast_log(LOG_WARNING, "Unsupported connection attribute value '%*s'\n", (int)value->slen, value->ptr);
 			}
 		} else if (!pj_strcmp2(&attr->name, "fingerprint")) {
 			char hash_value[256], hash[6];
-			RAII_VAR(char *, fingerprint_text, ast_strndup(value->ptr, value->slen), ast_free);
-
-			if (!fingerprint_text) {
-				return -1;
-			}
+			char fingerprint_text[value->slen + 1];
+			ast_copy_pj_str(fingerprint_text, value, sizeof(fingerprint_text));
 
 			if (sscanf(fingerprint_text, "%5s %255s", hash, hash_value) == 2) {
 				if (!strcasecmp(hash, "sha-1")) {
@@ -745,6 +732,12 @@
 	pjmedia_sdp_attr *attr;
 	const char *crypto_attribute;
 	struct ast_rtp_engine_dtls *dtls;
+	static const pj_str_t STR_NEW = { "new", 3 };
+	static const pj_str_t STR_EXISTING = { "existing", 8 };
+	static const pj_str_t STR_ACTIVE = { "active", 6 };
+	static const pj_str_t STR_PASSIVE = { "passive", 7 };
+	static const pj_str_t STR_ACTPASS = { "actpass", 7 };
+	static const pj_str_t STR_HOLDCONN = { "holdconn", 8 };
 
 	switch (session->endpoint->media_encryption) {
 	case AST_SIP_MEDIA_ENCRYPT_NONE:
@@ -781,11 +774,11 @@
 
 		switch (dtls->get_connection(session_media->rtp)) {
 		case AST_RTP_DTLS_CONNECTION_NEW:
-			attr = pjmedia_sdp_attr_create(pool, "connection", pj_cstr(&stmp, "new"));
+			attr = pjmedia_sdp_attr_create(pool, "connection", &STR_NEW);
 			media->attr[media->attr_count++] = attr;
 			break;
 		case AST_RTP_DTLS_CONNECTION_EXISTING:
-			attr = pjmedia_sdp_attr_create(pool, "connection", pj_cstr(&stmp, "existing"));
+			attr = pjmedia_sdp_attr_create(pool, "connection", &STR_EXISTING);
 			media->attr[media->attr_count++] = attr;
 			break;
 		default:
@@ -794,19 +787,19 @@
 
 		switch (dtls->get_setup(session_media->rtp)) {
 		case AST_RTP_DTLS_SETUP_ACTIVE:
-			attr = pjmedia_sdp_attr_create(pool, "setup", pj_cstr(&stmp, "active"));
+			attr = pjmedia_sdp_attr_create(pool, "setup", &STR_ACTIVE);
 			media->attr[media->attr_count++] = attr;
 			break;
 		case AST_RTP_DTLS_SETUP_PASSIVE:
-			attr = pjmedia_sdp_attr_create(pool, "setup", pj_cstr(&stmp, "passive"));
+			attr = pjmedia_sdp_attr_create(pool, "setup", &STR_PASSIVE);
 			media->attr[media->attr_count++] = attr;
 			break;
 		case AST_RTP_DTLS_SETUP_ACTPASS:
-			attr = pjmedia_sdp_attr_create(pool, "setup", pj_cstr(&stmp, "actpass"));
+			attr = pjmedia_sdp_attr_create(pool, "setup", &STR_ACTPASS);
 			media->attr[media->attr_count++] = attr;
 			break;
 		case AST_RTP_DTLS_SETUP_HOLDCONN:
-			attr = pjmedia_sdp_attr_create(pool, "setup", pj_cstr(&stmp, "holdconn"));
+			attr = pjmedia_sdp_attr_create(pool, "setup", &STR_HOLDCONN);
 			media->attr[media->attr_count++] = attr;
 			break;
 		default:

Modified: team/kmoore/pjsip_dtls/res/res_sip_session.c
URL: http://svnview.digium.com/svn/asterisk/team/kmoore/pjsip_dtls/res/res_sip_session.c?view=diff&rev=394806&r1=394805&r2=394806
==============================================================================
--- team/kmoore/pjsip_dtls/res/res_sip_session.c (original)
+++ team/kmoore/pjsip_dtls/res/res_sip_session.c Fri Jul 19 13:26:07 2013
@@ -854,7 +854,6 @@
 	ast_taskprocessor_unreference(session->serializer);
 	ao2_cleanup(session->datastores);
 	ao2_cleanup(session->media);
-	ast_rtp_dtls_cfg_free(&session->dtls_cfg);
 
 	AST_LIST_HEAD_DESTROY(&session->supplements);
 	while ((delay = AST_LIST_REMOVE_HEAD(&session->delayed_requests, next))) {
@@ -922,8 +921,6 @@
 	}
 	/* fill session->media with available types */
 	ao2_callback(sdp_handlers, OBJ_NODATA, add_session_media, session);
-
-	ast_rtp_dtls_cfg_copy(&endpoint->dtls_cfg, &session->dtls_cfg);
 
 	session->serializer = ast_sip_create_serializer();
 	if (!session->serializer) {




More information about the asterisk-commits mailing list