summaryrefslogtreecommitdiff
path: root/pjnath/src/pjstun-srv-test
diff options
context:
space:
mode:
Diffstat (limited to 'pjnath/src/pjstun-srv-test')
-rw-r--r--pjnath/src/pjstun-srv-test/bind_usage.c2
-rw-r--r--pjnath/src/pjstun-srv-test/main.c17
-rw-r--r--pjnath/src/pjstun-srv-test/server.h2
-rw-r--r--pjnath/src/pjstun-srv-test/turn_usage.c37
4 files changed, 45 insertions, 13 deletions
diff --git a/pjnath/src/pjstun-srv-test/bind_usage.c b/pjnath/src/pjstun-srv-test/bind_usage.c
index 680dd5c0..09112bdd 100644
--- a/pjnath/src/pjstun-srv-test/bind_usage.c
+++ b/pjnath/src/pjstun-srv-test/bind_usage.c
@@ -157,7 +157,7 @@ static pj_status_t sess_on_rx_request(pj_stun_session *sess,
PJ_UNUSED_ARG(pkt_len);
/* Create response */
- status = pj_stun_session_create_response(sess, msg, 0, NULL, &tdata);
+ status = pj_stun_session_create_res(sess, msg, 0, NULL, &tdata);
if (status != PJ_SUCCESS)
return status;
diff --git a/pjnath/src/pjstun-srv-test/main.c b/pjnath/src/pjstun-srv-test/main.c
index c462d47e..aad1c0f2 100644
--- a/pjnath/src/pjstun-srv-test/main.c
+++ b/pjnath/src/pjstun-srv-test/main.c
@@ -78,9 +78,10 @@ int main(int argc, char *argv[])
int c, opt_id;
pj_caching_pool cp;
pj_stun_server *srv;
+ pj_stun_usage *turn;
pj_status_t status;
- while((c=pj_getopt_long(argc,argv, "r:u:p:hF", long_options, &opt_id))!=-1) {
+ while((c=pj_getopt_long(argc,argv, "r:u:p:N:hF", long_options, &opt_id))!=-1) {
switch (c) {
case 'r':
o.realm = pj_optarg;
@@ -131,12 +132,24 @@ int main(int argc, char *argv[])
*/
status = pj_stun_turn_usage_create(srv, PJ_SOCK_DGRAM, NULL,
- 3478, NULL);
+ 3478, &turn);
if (status != PJ_SUCCESS) {
pj_stun_perror(THIS_FILE, "Unable to create bind usage", status);
return 1;
}
+ if (o.user_name && o.password) {
+ pj_stun_auth_cred cred;
+ pj_bzero(&cred, sizeof(cred));
+ cred.type = PJ_STUN_AUTH_CRED_STATIC;
+ cred.data.static_cred.realm = pj_str(o.realm);
+ cred.data.static_cred.username = pj_str(o.user_name);
+ cred.data.static_cred.data_type = 0;
+ cred.data.static_cred.data = pj_str(o.password);
+ cred.data.static_cred.nonce = pj_str(o.nonce);
+ pj_stun_turn_usage_set_credential(turn, &cred);
+ }
+
server_main(srv);
pj_stun_server_destroy(srv);
diff --git a/pjnath/src/pjstun-srv-test/server.h b/pjnath/src/pjstun-srv-test/server.h
index 633131c6..f06d7f85 100644
--- a/pjnath/src/pjstun-srv-test/server.h
+++ b/pjnath/src/pjstun-srv-test/server.h
@@ -124,6 +124,8 @@ PJ_DECL(pj_status_t) pj_stun_turn_usage_create(pj_stun_server *srv,
unsigned port,
pj_stun_usage **p_bu);
+PJ_DECL(pj_status_t) pj_stun_turn_usage_set_credential(pj_stun_usage *turn,
+ const pj_stun_auth_cred *cred);
pj_status_t pj_stun_server_register_usage(pj_stun_server *srv,
pj_stun_usage *usage);
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;