summaryrefslogtreecommitdiff
path: root/pjmedia
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-03-17 16:05:35 +0000
committerBenny Prijono <bennylp@teluu.com>2008-03-17 16:05:35 +0000
commit0e602ccdd09d4e09556b93dbdd63841865d08388 (patch)
tree469548248ae7c70d6e2c7284b5ac2725efd0b95c /pjmedia
parentdf316c166181fd58ebc4efad3d4a2f5bfdf86e9e (diff)
More ticket #479: bug in pjmedia_transport_get_info(), the info should be initialized by caller
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1873 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia')
-rw-r--r--pjmedia/include/pjmedia/transport.h23
-rw-r--r--pjmedia/src/pjmedia/transport_ice.c2
-rw-r--r--pjmedia/src/pjmedia/transport_srtp.c6
-rw-r--r--pjmedia/src/pjmedia/transport_udp.c1
4 files changed, 19 insertions, 13 deletions
diff --git a/pjmedia/include/pjmedia/transport.h b/pjmedia/include/pjmedia/transport.h
index fcf120da..19869a9b 100644
--- a/pjmedia/include/pjmedia/transport.h
+++ b/pjmedia/include/pjmedia/transport.h
@@ -405,7 +405,7 @@ struct pjmedia_transport
};
/**
- * This structure describes buffer storage of transport specific info.
+ * This structure describes storage buffer of transport specific info.
* The actual transport specific info contents will be defined by transport
* implementation. Note that some transport implementations do not need to
* provide specific info, since the general socket info is enough.
@@ -456,10 +456,23 @@ struct pjmedia_transport_info
/**
- * Get media socket info from the specified transport. The socket info
- * contains information about the local address of this transport, and
- * would be needed for example to fill in the "c=" and "m=" line of local
- * SDP.
+ * Initialize transport info.
+ *
+ * @param info Transport info to be initialized.
+ */
+PJ_INLINE(void) pjmedia_transport_info_init(pjmedia_transport_info *info)
+{
+ pj_bzero(&info->sock_info, sizeof(pjmedia_sock_info));
+ info->sock_info.rtp_sock = info->sock_info.rtcp_sock = PJ_INVALID_SOCKET;
+ info->specific_info_cnt = 0;
+}
+
+
+/**
+ * Get media transport info from the specified transport and all underlying
+ * transports if any. The transport also contains information about socket info
+ * which describes the local address of the transport, and would be needed
+ * for example to fill in the "c=" and "m=" line of local SDP.
*
* @param tp The transport.
* @param info Media socket info to be initialized.
diff --git a/pjmedia/src/pjmedia/transport_ice.c b/pjmedia/src/pjmedia/transport_ice.c
index 0534ad4b..59408dd8 100644
--- a/pjmedia/src/pjmedia/transport_ice.c
+++ b/pjmedia/src/pjmedia/transport_ice.c
@@ -700,8 +700,6 @@ static pj_status_t transport_get_info(pjmedia_transport *tp,
sizeof(pj_sockaddr_in));
}
- info->specific_info_cnt = 0;
-
return PJ_SUCCESS;
}
diff --git a/pjmedia/src/pjmedia/transport_srtp.c b/pjmedia/src/pjmedia/transport_srtp.c
index 3bd95c88..6cc3881a 100644
--- a/pjmedia/src/pjmedia/transport_srtp.c
+++ b/pjmedia/src/pjmedia/transport_srtp.c
@@ -564,10 +564,6 @@ static pj_status_t transport_get_info(pjmedia_transport *tp,
PJ_ASSERT_RETURN(sizeof(pjmedia_srtp_info) <=
PJMEDIA_TRANSPORT_SPECIFIC_INFO_MAXSIZE, PJ_ENOMEM);
- status = pjmedia_transport_get_info(srtp->real_tp, info);
- if (status != PJ_SUCCESS)
- return status;
-
srtp_info.active = srtp->session_inited;
srtp_info.rx_policy = srtp->rx_policy;
srtp_info.tx_policy = srtp->tx_policy;
@@ -578,7 +574,7 @@ static pj_status_t transport_get_info(pjmedia_transport *tp,
pj_memcpy(&info->spc_info[spc_info_idx].buffer, &srtp_info,
sizeof(srtp_info));
- return PJ_SUCCESS;
+ return pjmedia_transport_get_info(srtp->real_tp, info);
}
static pj_status_t transport_attach(pjmedia_transport *tp,
diff --git a/pjmedia/src/pjmedia/transport_udp.c b/pjmedia/src/pjmedia/transport_udp.c
index f4e12cd1..c671d0f7 100644
--- a/pjmedia/src/pjmedia/transport_udp.c
+++ b/pjmedia/src/pjmedia/transport_udp.c
@@ -593,7 +593,6 @@ static pj_status_t transport_get_info(pjmedia_transport *tp,
info->sock_info.rtp_addr_name = udp->rtp_addr_name;
info->sock_info.rtcp_sock = udp->rtcp_sock;
info->sock_info.rtcp_addr_name = udp->rtcp_addr_name;
- info->specific_info_cnt = 0;
return PJ_SUCCESS;
}