summaryrefslogtreecommitdiff
path: root/pjnath/src/pjstun-srv-test/turn_usage.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjnath/src/pjstun-srv-test/turn_usage.c')
-rw-r--r--pjnath/src/pjstun-srv-test/turn_usage.c37
1 files changed, 27 insertions, 10 deletions
diff --git a/pjnath/src/pjstun-srv-test/turn_usage.c b/pjnath/src/pjstun-srv-test/turn_usage.c
index 145d8020..c3e53577 100644
--- a/pjnath/src/pjstun-srv-test/turn_usage.c
+++ b/pjnath/src/pjstun-srv-test/turn_usage.c
@@ -78,6 +78,7 @@ struct turn_usage
int type;
pj_stun_session *default_session;
pj_hash_table_t *client_htable;
+ pj_stun_auth_cred *cred;
unsigned max_bw_kbps;
unsigned max_lifetime;
@@ -225,6 +226,19 @@ PJ_DEF(pj_status_t) pj_stun_turn_usage_create(pj_stun_server *srv,
}
+PJ_DEF(pj_status_t) pj_stun_turn_usage_set_credential(pj_stun_usage *turn,
+ const pj_stun_auth_cred *c)
+{
+ struct turn_usage *tu;
+ tu = (struct turn_usage*) pj_stun_usage_get_user_data(turn);
+
+ tu->cred = PJ_POOL_ZALLOC_T(tu->pool, pj_stun_auth_cred);
+ pj_stun_auth_cred_dup(tu->pool, tu->cred, c);
+ pj_stun_session_set_credential(tu->default_session, tu->cred);
+ return PJ_SUCCESS;
+}
+
+
/*
* This is a callback called by usage.c when the particular STUN usage
* is to be destroyed.
@@ -441,9 +455,9 @@ static pj_status_t tu_sess_on_rx_request(pj_stun_session *sess,
} else if (msg->hdr.type != PJ_STUN_ALLOCATE_REQUEST) {
if (PJ_STUN_IS_REQUEST(msg->hdr.type)) {
- status = pj_stun_session_create_response(sess, msg,
- PJ_STUN_SC_NO_BINDING,
- NULL, &tdata);
+ status = pj_stun_session_create_res(sess, msg,
+ PJ_STUN_SC_NO_BINDING,
+ NULL, &tdata);
if (status==PJ_SUCCESS) {
status = pj_stun_session_send_msg(sess, PJ_FALSE,
src_addr, src_addr_len,
@@ -630,6 +644,9 @@ static pj_status_t client_create(struct turn_usage *tu,
return status;
}
+ if (tu->cred)
+ pj_stun_session_set_credential(client->session, tu->cred);
+
sd = PJ_POOL_ZALLOC_T(pool, struct session_data);
sd->tu = tu;
sd->client = client;
@@ -863,9 +880,9 @@ static pj_status_t client_respond(struct turn_client *client,
if (custom_msg)
pj_cstr(&err_msg, custom_msg), p_err_msg = &err_msg;
- status = pj_stun_session_create_response(client->session, msg,
- err_code, p_err_msg,
- &response);
+ status = pj_stun_session_create_res(client->session, msg,
+ err_code, p_err_msg,
+ &response);
if (status == PJ_SUCCESS)
status = pj_stun_session_send_msg(client->session, PJ_TRUE,
dst_addr, dst_addr_len, response);
@@ -1014,8 +1031,8 @@ static pj_status_t client_handle_allocate_req(struct turn_client *client,
client->expiry_timer.id = PJ_TRUE;
/* Done successfully, create and send success response */
- status = pj_stun_session_create_response(client->session, msg,
- 0, NULL, &response);
+ status = pj_stun_session_create_res(client->session, msg,
+ 0, NULL, &response);
if (status != PJ_SUCCESS) {
return status;
}
@@ -1062,8 +1079,8 @@ static pj_status_t handle_binding_req(pj_stun_session *session,
pj_status_t status;
/* Create response */
- status = pj_stun_session_create_response(session, msg, 0, NULL,
- &tdata);
+ status = pj_stun_session_create_res(session, msg, 0, NULL,
+ &tdata);
if (status != PJ_SUCCESS)
return status;