summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2008-06-09 09:35:59 +0000
committerNanang Izzuddin <nanang@teluu.com>2008-06-09 09:35:59 +0000
commitaaf615c87e0dda72c1d4be4447f6cc7a4e6f4dcb (patch)
treee53572f071433a191bf77421092dd78a4369206f
parentf6d8f37b237c92c95a51ff34f525a4c18543087a (diff)
Added more validations & a new API (thanks Florian Bomers):
- added more validation on pjmedia transport get info. - added more validation on stop_media_session() of pjsua_media, useful when conference is not used. - added new API for retrieving user_data of pjmedia session. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1998 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjmedia/include/pjmedia/session.h9
-rw-r--r--pjmedia/include/pjmedia/transport.h2
-rw-r--r--pjmedia/src/pjmedia/session.c7
-rw-r--r--pjsip/src/pjsua-lib/pjsua_media.c4
4 files changed, 20 insertions, 2 deletions
diff --git a/pjmedia/include/pjmedia/session.h b/pjmedia/include/pjmedia/session.h
index 37664469..225044c7 100644
--- a/pjmedia/include/pjmedia/session.h
+++ b/pjmedia/include/pjmedia/session.h
@@ -172,6 +172,15 @@ pjmedia_session_create( pjmedia_endpt *endpt,
PJ_DECL(pj_status_t) pjmedia_session_get_info( pjmedia_session *session,
pjmedia_session_info *info );
+/**
+ * Get user data of the session.
+ *
+ * @param session The session being queried.
+ *
+ * @return User data of the session.
+ */
+PJ_DECL(void*) pjmedia_session_get_user_data( pjmedia_session *session);
+
/**
* Activate all streams in media session for the specified direction.
diff --git a/pjmedia/include/pjmedia/transport.h b/pjmedia/include/pjmedia/transport.h
index 51bab86c..b898f65b 100644
--- a/pjmedia/include/pjmedia/transport.h
+++ b/pjmedia/include/pjmedia/transport.h
@@ -496,7 +496,7 @@ PJ_INLINE(void) pjmedia_transport_info_init(pjmedia_transport_info *info)
PJ_INLINE(pj_status_t) pjmedia_transport_get_info(pjmedia_transport *tp,
pjmedia_transport_info *info)
{
- if (tp->op->get_info)
+ if (tp && tp->op && tp->op->get_info)
return (*tp->op->get_info)(tp, info);
else
return PJ_ENOTSUP;
diff --git a/pjmedia/src/pjmedia/session.c b/pjmedia/src/pjmedia/session.c
index e8e65951..bc043860 100644
--- a/pjmedia/src/pjmedia/session.c
+++ b/pjmedia/src/pjmedia/session.c
@@ -685,6 +685,13 @@ PJ_DEF(pj_status_t) pjmedia_session_get_info( pjmedia_session *session,
return PJ_SUCCESS;
}
+/*
+ * Get user data.
+ */
+PJ_DEF(void*) pjmedia_session_get_user_data( pjmedia_session *session)
+{
+ return (session? session->user_data : NULL);
+}
/**
* Destroy media session.
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c
index a43ce4cb..9449a33c 100644
--- a/pjsip/src/pjsua-lib/pjsua_media.c
+++ b/pjsip/src/pjsua-lib/pjsua_media.c
@@ -953,7 +953,9 @@ static void stop_media_session(pjsua_call_id call_id)
//pjmedia_transport_media_stop(call->med_tp);
if (call->conf_slot != PJSUA_INVALID_ID) {
- pjmedia_conf_remove_port(pjsua_var.mconf, call->conf_slot);
+ if (pjsua_var.mconf) {
+ pjmedia_conf_remove_port(pjsua_var.mconf, call->conf_slot);
+ }
call->conf_slot = PJSUA_INVALID_ID;
}