[asterisk-commits] simon.perreault: branch group/v6-new r272523 - /team/group/v6-new/channels/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Jun 25 08:21:02 CDT 2010


Author: simon.perreault
Date: Fri Jun 25 08:20:58 2010
New Revision: 272523

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=272523
Log:
Converted chan_h323 to the new IPv6-enabled RTP API using casts.

Modified:
    team/group/v6-new/channels/chan_h323.c

Modified: team/group/v6-new/channels/chan_h323.c
URL: http://svnview.digium.com/svn/asterisk/team/group/v6-new/channels/chan_h323.c?view=diff&rev=272523&r1=272522&r2=272523
==============================================================================
--- team/group/v6-new/channels/chan_h323.c (original)
+++ team/group/v6-new/channels/chan_h323.c Fri Jun 25 08:20:58 2010
@@ -954,15 +954,20 @@
 
 static int __oh323_rtp_create(struct oh323_pvt *pvt)
 {
-	struct sockaddr_in our_addr;
+	struct ast_sockaddr our_addr;
 
 	if (pvt->rtp)
 		return 0;
 
-	if (ast_find_ourip(&our_addr.sin_addr, bindaddr)) {
-		ast_mutex_unlock(&pvt->lock);
-		ast_log(LOG_ERROR, "Unable to locate local IP address for RTP stream\n");
-		return -1;
+	{
+		struct ast_sockaddr tmp;
+
+		tmp = ast_sockaddr_from_sin(bindaddr);
+		if (ast_find_ourip(&our_addr, &tmp)) {
+			ast_mutex_unlock(&pvt->lock);
+			ast_log(LOG_ERROR, "Unable to locate local IP address for RTP stream\n");
+			return -1;
+		}
 	}
 	pvt->rtp = ast_rtp_instance_new("asterisk", sched, &our_addr, NULL);
 	if (!pvt->rtp) {
@@ -1408,9 +1413,14 @@
 				ast_log(LOG_ERROR, "A dynamic host on a type=user does not make any sense\n");
 				ASTOBJ_UNREF(user, oh323_destroy_user);
 				return NULL;
-			} else if (ast_get_ip(&user->addr, v->value)) {
-				ASTOBJ_UNREF(user, oh323_destroy_user);
-				return NULL;
+			} else {
+				struct ast_sockaddr tmp;
+
+				if (ast_get_ip(&tmp, v->value)) {
+					ASTOBJ_UNREF(user, oh323_destroy_user);
+					return NULL;
+				}
+				ast_sockaddr_to_sin(&tmp, &user->addr);
 			}
 			/* Let us know we need to use ip authentication */
 			user->host = 1;
@@ -1522,10 +1532,15 @@
 				ASTOBJ_UNREF(peer, oh323_destroy_peer);
 				return NULL;
 			}
-			if (ast_get_ip(&peer->addr, v->value)) {
-				ast_log(LOG_ERROR, "Could not determine IP for %s\n", v->value);
-				ASTOBJ_UNREF(peer, oh323_destroy_peer);
-				return NULL;
+			{
+				struct ast_sockaddr tmp;
+
+				if (ast_get_ip(&tmp, v->value)) {
+					ast_log(LOG_ERROR, "Could not determine IP for %s\n", v->value);
+					ASTOBJ_UNREF(peer, oh323_destroy_peer);
+					return NULL;
+				}
+				ast_sockaddr_to_sin(&tmp, &peer->addr);
 			}
 		} else if (!strcasecmp(v->name, "port")) {
 			peer->addr.sin_port = htons(atoi(v->value));
@@ -1922,7 +1937,12 @@
 		return NULL;
 	}
 	/* figure out our local RTP port and tell the H.323 stack about it */
-	ast_rtp_instance_get_local_address(pvt->rtp, &us);
+	{
+		struct ast_sockaddr tmp;
+
+		ast_rtp_instance_get_local_address(pvt->rtp, &tmp);
+		ast_sockaddr_to_sin(&tmp, &us);
+	}
 	ast_mutex_unlock(&pvt->lock);
 
 	ast_copy_string(info->addr, ast_inet_ntoa(us.sin_addr), sizeof(info->addr));
@@ -1971,7 +1991,12 @@
 	them.sin_port = htons(remotePort);
 
 	if (them.sin_addr.s_addr) {
-		ast_rtp_instance_set_remote_address(pvt->rtp, &them);
+		{
+			struct ast_sockaddr tmp;
+
+			tmp = ast_sockaddr_from_sin(them);
+			ast_rtp_instance_set_remote_address(pvt->rtp, &tmp);
+		}
 		if (pvt->recvonly) {
 			pvt->recvonly = 0;
 			rtp_change = NEED_UNHOLD;
@@ -3204,8 +3229,14 @@
 		ast_log(LOG_ERROR, "No Private Structure, this is bad\n");
 		return -1;
 	}
-	ast_rtp_instance_get_remote_address(rtp, &them);
-	ast_rtp_instance_get_local_address(rtp, &us);
+	{
+		struct ast_sockaddr tmp;
+
+		ast_rtp_instance_get_remote_address(rtp, &tmp);
+		ast_sockaddr_to_sin(&tmp, &them);
+		ast_rtp_instance_get_local_address(rtp, &tmp);
+		ast_sockaddr_to_sin(&tmp, &us);
+	}
 #if 0	/* Native bridge still isn't ready */
 	h323_native_bridge(pvt->cd.call_token, ast_inet_ntoa(them.sin_addr), mode);
 #endif




More information about the asterisk-commits mailing list