summaryrefslogtreecommitdiff
path: root/pjnath
diff options
context:
space:
mode:
authorLiong Sauw Ming <ming@teluu.com>2013-10-01 05:00:57 +0000
committerLiong Sauw Ming <ming@teluu.com>2013-10-01 05:00:57 +0000
commitb26d40d558f5be24bed5fb107cd4844f3cea1a03 (patch)
treecb2f7f217f4886b067cc01be4bd66966294e26db /pjnath
parent087474f737e1bec37fe4507b024c6db3a794be90 (diff)
Fixed #1674: Deadlock when third party media employs external lock and ICE is active
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4606 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjnath')
-rw-r--r--pjnath/include/pjnath/ice_strans.h8
-rw-r--r--pjnath/include/pjnath/stun_session.h9
-rw-r--r--pjnath/include/pjnath/stun_sock.h10
-rw-r--r--pjnath/include/pjnath/turn_session.h10
-rw-r--r--pjnath/include/pjnath/turn_sock.h10
-rw-r--r--pjnath/src/pjnath/ice_strans.c9
-rw-r--r--pjnath/src/pjnath/stun_session.c6
-rw-r--r--pjnath/src/pjnath/stun_sock.c7
-rw-r--r--pjnath/src/pjnath/turn_session.c8
-rw-r--r--pjnath/src/pjnath/turn_sock.c9
10 files changed, 86 insertions, 0 deletions
diff --git a/pjnath/include/pjnath/ice_strans.h b/pjnath/include/pjnath/ice_strans.h
index fe38ff58..340bf605 100644
--- a/pjnath/include/pjnath/ice_strans.h
+++ b/pjnath/include/pjnath/ice_strans.h
@@ -564,6 +564,14 @@ PJ_DECL(pj_status_t) pj_ice_strans_get_options(pj_ice_strans *ice_st,
PJ_DECL(pj_status_t) pj_ice_strans_set_options(pj_ice_strans *ice_st,
const pj_ice_sess_options *opt);
+/**
+ * Get the group lock for this ICE stream transport.
+ *
+ * @param ice_st The ICE stream transport.
+ *
+ * @return The group lock.
+ */
+PJ_DECL(pj_grp_lock_t *) pj_ice_strans_get_grp_lock(pj_ice_strans *ice_st);
/**
* Initialize the ICE session in the ICE stream transport.
diff --git a/pjnath/include/pjnath/stun_session.h b/pjnath/include/pjnath/stun_session.h
index 88dc78df..f8ea4d1d 100644
--- a/pjnath/include/pjnath/stun_session.h
+++ b/pjnath/include/pjnath/stun_session.h
@@ -435,6 +435,15 @@ PJ_DECL(pj_status_t) pj_stun_session_set_user_data(pj_stun_session *sess,
PJ_DECL(void*) pj_stun_session_get_user_data(pj_stun_session *sess);
/**
+ * Get the group lock for this STUN session.
+ *
+ * @param sess The STUN session instance.
+ *
+ * @return The group lock.
+ */
+PJ_DECL(pj_grp_lock_t *) pj_stun_session_get_grp_lock(pj_stun_session *sess);
+
+/**
* Set SOFTWARE name to be included in all requests and responses.
*
* @param sess The STUN session instance.
diff --git a/pjnath/include/pjnath/stun_sock.h b/pjnath/include/pjnath/stun_sock.h
index 081f36d5..a1123a1f 100644
--- a/pjnath/include/pjnath/stun_sock.h
+++ b/pjnath/include/pjnath/stun_sock.h
@@ -434,6 +434,16 @@ PJ_DECL(void*) pj_stun_sock_get_user_data(pj_stun_sock *stun_sock);
/**
+ * Get the group lock for this STUN transport.
+ *
+ * @param stun_sock The STUN transport instance.
+ *
+ * @return The group lock.
+ */
+PJ_DECL(pj_grp_lock_t *) pj_stun_sock_get_grp_lock(pj_stun_sock *stun_sock);
+
+
+/**
* Get the STUN transport info. The transport info contains, among other
* things, the allocated relay address.
*
diff --git a/pjnath/include/pjnath/turn_session.h b/pjnath/include/pjnath/turn_session.h
index d3adc79b..e4ae4d7b 100644
--- a/pjnath/include/pjnath/turn_session.h
+++ b/pjnath/include/pjnath/turn_session.h
@@ -513,6 +513,16 @@ PJ_DECL(void*) pj_turn_session_get_user_data(pj_turn_session *sess);
/**
+ * Get the group lock for this TURN session.
+ *
+ * @param sess The TURN client session.
+ *
+ * @return The group lock.
+ */
+PJ_DECL(pj_grp_lock_t *) pj_turn_session_get_grp_lock(pj_turn_session *sess);
+
+
+/**
* Configure message logging. By default all flags are enabled.
*
* @param sess The TURN client session.
diff --git a/pjnath/include/pjnath/turn_sock.h b/pjnath/include/pjnath/turn_sock.h
index eddac515..bbff6bf7 100644
--- a/pjnath/include/pjnath/turn_sock.h
+++ b/pjnath/include/pjnath/turn_sock.h
@@ -265,6 +265,16 @@ PJ_DECL(void*) pj_turn_sock_get_user_data(pj_turn_sock *turn_sock);
/**
+ * Get the group lock for this TURN transport.
+ *
+ * @param turn_sock The TURN transport instance.
+ *
+ * @return The group lock.
+ */
+PJ_DECL(pj_grp_lock_t *) pj_turn_sock_get_grp_lock(pj_turn_sock *turn_sock);
+
+
+/**
* Get the TURN transport info. The transport info contains, among other
* things, the allocated relay address.
*
diff --git a/pjnath/src/pjnath/ice_strans.c b/pjnath/src/pjnath/ice_strans.c
index 86031d98..bd817272 100644
--- a/pjnath/src/pjnath/ice_strans.c
+++ b/pjnath/src/pjnath/ice_strans.c
@@ -797,6 +797,15 @@ PJ_DEF(pj_status_t) pj_ice_strans_set_options(pj_ice_strans *ice_st,
return PJ_SUCCESS;
}
+/**
+ * Get the group lock for this ICE stream transport.
+ */
+PJ_DEF(pj_grp_lock_t *) pj_ice_strans_get_grp_lock(pj_ice_strans *ice_st)
+{
+ PJ_ASSERT_RETURN(ice_st, NULL);
+ return ice_st->grp_lock;
+}
+
/*
* Create ICE!
*/
diff --git a/pjnath/src/pjnath/stun_session.c b/pjnath/src/pjnath/stun_session.c
index 23c3c99b..96959738 100644
--- a/pjnath/src/pjnath/stun_session.c
+++ b/pjnath/src/pjnath/stun_session.c
@@ -621,6 +621,12 @@ PJ_DEF(void*) pj_stun_session_get_user_data(pj_stun_session *sess)
return sess->user_data;
}
+PJ_DEF(pj_grp_lock_t *) pj_stun_session_get_grp_lock(pj_stun_session *sess)
+{
+ PJ_ASSERT_RETURN(sess, NULL);
+ return sess->grp_lock;
+}
+
PJ_DEF(pj_status_t) pj_stun_session_set_software_name(pj_stun_session *sess,
const pj_str_t *sw)
{
diff --git a/pjnath/src/pjnath/stun_sock.c b/pjnath/src/pjnath/stun_sock.c
index eadec9cb..333dedd9 100644
--- a/pjnath/src/pjnath/stun_sock.c
+++ b/pjnath/src/pjnath/stun_sock.c
@@ -528,6 +528,13 @@ PJ_DEF(void*) pj_stun_sock_get_user_data(pj_stun_sock *stun_sock)
return stun_sock->user_data;
}
+/* Get group lock */
+PJ_DECL(pj_grp_lock_t *) pj_stun_sock_get_grp_lock(pj_stun_sock *stun_sock)
+{
+ PJ_ASSERT_RETURN(stun_sock, NULL);
+ return stun_sock->grp_lock;
+}
+
/* Notify application that session has failed */
static pj_bool_t sess_fail(pj_stun_sock *stun_sock,
pj_stun_sock_op op,
diff --git a/pjnath/src/pjnath/turn_session.c b/pjnath/src/pjnath/turn_session.c
index 42fa6358..8ab3e315 100644
--- a/pjnath/src/pjnath/turn_session.c
+++ b/pjnath/src/pjnath/turn_session.c
@@ -525,6 +525,14 @@ PJ_DEF(void*) pj_turn_session_get_user_data(pj_turn_session *sess)
return sess->user_data;
}
+/**
+ * Get group lock.
+ */
+PJ_DEF(pj_grp_lock_t *) pj_turn_session_get_grp_lock(pj_turn_session *sess)
+{
+ PJ_ASSERT_RETURN(sess, NULL);
+ return sess->grp_lock;
+}
/*
* Configure message logging. By default all flags are enabled.
diff --git a/pjnath/src/pjnath/turn_sock.c b/pjnath/src/pjnath/turn_sock.c
index 42beb225..541175c6 100644
--- a/pjnath/src/pjnath/turn_sock.c
+++ b/pjnath/src/pjnath/turn_sock.c
@@ -324,6 +324,15 @@ PJ_DEF(void*) pj_turn_sock_get_user_data(pj_turn_sock *turn_sock)
return turn_sock->user_data;
}
+/*
+ * Get group lock.
+ */
+PJ_DEF(pj_grp_lock_t *) pj_turn_sock_get_grp_lock(pj_turn_sock *turn_sock)
+{
+ PJ_ASSERT_RETURN(turn_sock, NULL);
+ return turn_sock->grp_lock;
+}
+
/**
* Get info.
*/