Lines Matching refs:tdata

79 static void destroy_tdata(pj_stun_tx_data *tdata, pj_bool_t force);
90 pj_stun_tx_data *tdata) in tsx_add() argument
92 pj_list_push_front(&sess->pending_request_list, tdata); in tsx_add()
97 pj_stun_tx_data *tdata) in tsx_erase() argument
100 pj_list_erase(tdata); in tsx_erase()
107 pj_stun_tx_data *tdata; in tsx_lookup() local
109 tdata = sess->pending_request_list.next; in tsx_lookup()
110 while (tdata != &sess->pending_request_list) { in tsx_lookup()
111 pj_assert(sizeof(tdata->msg_key)==sizeof(msg->hdr.tsx_id)); in tsx_lookup()
112 if (tdata->msg_magic == msg->hdr.magic && in tsx_lookup()
113 pj_memcmp(tdata->msg_key, msg->hdr.tsx_id, in tsx_lookup()
116 return tdata; in tsx_lookup()
118 tdata = tdata->next; in tsx_lookup()
128 pj_stun_tx_data *tdata; in create_tdata() local
135 tdata = PJ_POOL_ZALLOC_T(pool, pj_stun_tx_data); in create_tdata()
136 tdata->pool = pool; in create_tdata()
137 tdata->sess = sess; in create_tdata()
139 pj_list_init(tdata); in create_tdata()
141 *p_tdata = tdata; in create_tdata()
148 pj_stun_tx_data *tdata; in stun_tsx_on_destroy() local
150 tdata = (pj_stun_tx_data*) pj_stun_client_tsx_get_data(tsx); in stun_tsx_on_destroy()
152 if (tdata) { in stun_tsx_on_destroy()
153 pj_stun_session *sess = tdata->sess; in stun_tsx_on_destroy()
156 tsx_erase(sess, tdata); in stun_tsx_on_destroy()
157 destroy_tdata(tdata, PJ_TRUE); in stun_tsx_on_destroy()
168 pj_stun_tx_data *tdata = (pj_stun_tx_data*)arg; in tdata_on_destroy() local
170 pj_pool_safe_release(&tdata->pool); in tdata_on_destroy()
173 static void destroy_tdata(pj_stun_tx_data *tdata, pj_bool_t force) in destroy_tdata() argument
175 TRACE_((THIS_FILE, "tdata %p destroy request, force=%d, tsx=%p", tdata, in destroy_tdata()
176 force, tdata->client_tsx)); in destroy_tdata()
180 if (tdata->res_timer.id != PJ_FALSE) { in destroy_tdata()
181 pj_timer_heap_cancel_if_active(tdata->sess->cfg->timer_heap, in destroy_tdata()
182 &tdata->res_timer, PJ_FALSE); in destroy_tdata()
186 pj_list_erase(tdata); in destroy_tdata()
187 if (tdata->client_tsx) { in destroy_tdata()
188 pj_stun_client_tsx_stop(tdata->client_tsx); in destroy_tdata()
189 pj_stun_client_tsx_set_data(tdata->client_tsx, NULL); in destroy_tdata()
191 if (tdata->grp_lock) { in destroy_tdata()
192 pj_grp_lock_dec_ref(tdata->sess->grp_lock); in destroy_tdata()
193 pj_grp_lock_dec_ref(tdata->grp_lock); in destroy_tdata()
195 tdata_on_destroy(tdata); in destroy_tdata()
199 if (tdata->client_tsx) { in destroy_tdata()
202 pj_stun_client_tsx_schedule_destroy(tdata->client_tsx, &delay); in destroy_tdata()
205 pj_list_erase(tdata); in destroy_tdata()
206 if (tdata->grp_lock) { in destroy_tdata()
207 pj_grp_lock_dec_ref(tdata->sess->grp_lock); in destroy_tdata()
208 pj_grp_lock_dec_ref(tdata->grp_lock); in destroy_tdata()
210 tdata_on_destroy(tdata); in destroy_tdata()
220 pj_stun_tx_data *tdata) in pj_stun_msg_destroy_tdata() argument
223 destroy_tdata(tdata, PJ_FALSE); in pj_stun_msg_destroy_tdata()
231 pj_stun_tx_data *tdata; in on_cache_timeout() local
237 tdata = (pj_stun_tx_data*) entry->user_data; in on_cache_timeout()
238 sess = tdata->sess; in on_cache_timeout()
246 PJ_LOG(5,(SNAME(tdata->sess), "Response cache deleted")); in on_cache_timeout()
248 destroy_tdata(tdata, PJ_FALSE); in on_cache_timeout()
365 pj_stun_tx_data *tdata; in handle_auth_challenge() local
407 NULL, &tdata); in handle_auth_challenge()
426 tdata->msg->attr[tdata->msg->attr_count++] = in handle_auth_challenge()
427 pj_stun_attr_clone(tdata->pool, asrc); in handle_auth_challenge()
440 src_addr_len, tdata); in handle_auth_challenge()
457 pj_stun_tx_data *tdata; in stun_tsx_on_complete() local
459 tdata = (pj_stun_tx_data*) pj_stun_client_tsx_get_data(tsx); in stun_tsx_on_complete()
460 sess = tdata->sess; in stun_tsx_on_complete()
465 pj_stun_msg_destroy_tdata(sess, tdata); in stun_tsx_on_complete()
471 handle_auth_challenge(sess, tdata, response, src_addr, in stun_tsx_on_complete()
475 (*sess->cb.on_request_complete)(sess, status, tdata->token, tdata, in stun_tsx_on_complete()
483 destroy_tdata(tdata, PJ_TRUE); in stun_tsx_on_complete()
485 destroy_tdata(tdata, PJ_FALSE); in stun_tsx_on_complete()
486 tdata = NULL; in stun_tsx_on_complete()
495 pj_stun_tx_data *tdata; in stun_tsx_on_send_msg() local
499 tdata = (pj_stun_tx_data*) pj_stun_client_tsx_get_data(tsx); in stun_tsx_on_send_msg()
500 sess = tdata->sess; in stun_tsx_on_send_msg()
511 status = sess->cb.on_send_msg(tdata->sess, tdata->token, stun_pkt, in stun_tsx_on_send_msg()
512 pkt_size, tdata->dst_addr, in stun_tsx_on_send_msg()
513 tdata->addr_len); in stun_tsx_on_send_msg()
582 pj_stun_tx_data *tdata = sess->pending_request_list.next; in stun_sess_on_destroy() local
583 destroy_tdata(tdata, PJ_TRUE); in stun_sess_on_destroy()
594 pj_stun_tx_data *tdata; in pj_stun_session_destroy() local
614 tdata = sess->pending_request_list.next; in pj_stun_session_destroy()
615 while (tdata != &sess->pending_request_list) { in pj_stun_session_destroy()
616 if (tdata->client_tsx) in pj_stun_session_destroy()
617 pj_stun_client_tsx_stop(tdata->client_tsx); in pj_stun_session_destroy()
618 tdata = tdata->next; in pj_stun_session_destroy()
709 pj_stun_tx_data *tdata) in get_auth() argument
713 tdata->auth_info.realm = sess->server_realm; in get_auth()
714 tdata->auth_info.username = sess->cred.data.static_cred.username; in get_auth()
715 tdata->auth_info.nonce = sess->cred.data.static_cred.nonce; in get_auth()
717 pj_stun_create_key(tdata->pool, &tdata->auth_info.auth_key, in get_auth()
718 &tdata->auth_info.realm, in get_auth()
719 &tdata->auth_info.username, in get_auth()
729 rc = (*sess->cred.data.dyn_cred.get_cred)(tdata->msg, user_data, in get_auth()
730 tdata->pool, in get_auth()
731 &tdata->auth_info.realm, in get_auth()
732 &tdata->auth_info.username, in get_auth()
733 &tdata->auth_info.nonce, in get_auth()
738 pj_stun_create_key(tdata->pool, &tdata->auth_info.auth_key, in get_auth()
739 &tdata->auth_info.realm, &tdata->auth_info.username, in get_auth()
756 pj_stun_tx_data *tdata = NULL; in pj_stun_session_create_req() local
767 status = create_tdata(sess, &tdata); in pj_stun_session_create_req()
772 status = pj_stun_msg_create(tdata->pool, method, magic, in pj_stun_session_create_req()
773 tsx_id, &tdata->msg); in pj_stun_session_create_req()
778 pj_assert(sizeof(tdata->msg_key)==sizeof(tdata->msg->hdr.tsx_id)); in pj_stun_session_create_req()
779 tdata->msg_magic = tdata->msg->hdr.magic; in pj_stun_session_create_req()
780 pj_memcpy(tdata->msg_key, tdata->msg->hdr.tsx_id, in pj_stun_session_create_req()
781 sizeof(tdata->msg->hdr.tsx_id)); in pj_stun_session_create_req()
790 status = get_auth(sess, tdata); in pj_stun_session_create_req()
799 status = get_auth(sess, tdata); in pj_stun_session_create_req()
802 tdata->auth_info.nonce = sess->next_nonce; in pj_stun_session_create_req()
803 tdata->auth_info.realm = sess->server_realm; in pj_stun_session_create_req()
812 *p_tdata = tdata; in pj_stun_session_create_req()
817 if (tdata) in pj_stun_session_create_req()
818 pj_pool_safe_release(&tdata->pool); in pj_stun_session_create_req()
827 pj_stun_tx_data *tdata = NULL; in pj_stun_session_create_ind() local
838 status = create_tdata(sess, &tdata); in pj_stun_session_create_ind()
846 status = pj_stun_msg_create(tdata->pool, msg_type, PJ_STUN_MAGIC, in pj_stun_session_create_ind()
847 NULL, &tdata->msg); in pj_stun_session_create_ind()
849 pj_pool_safe_release(&tdata->pool); in pj_stun_session_create_ind()
854 *p_tdata = tdata; in pj_stun_session_create_ind()
870 pj_stun_tx_data *tdata = NULL; in pj_stun_session_create_res() local
878 status = create_tdata(sess, &tdata); in pj_stun_session_create_res()
885 status = pj_stun_msg_create_response(tdata->pool, rdata->msg, in pj_stun_session_create_res()
886 err_code, err_msg, &tdata->msg); in pj_stun_session_create_res()
888 pj_pool_safe_release(&tdata->pool); in pj_stun_session_create_res()
894 pj_assert(sizeof(tdata->msg_key)==sizeof(rdata->msg->hdr.tsx_id)); in pj_stun_session_create_res()
895 tdata->msg_magic = rdata->msg->hdr.magic; in pj_stun_session_create_res()
896 pj_memcpy(tdata->msg_key, rdata->msg->hdr.tsx_id, in pj_stun_session_create_res()
900 pj_stun_req_cred_info_dup(tdata->pool, &tdata->auth_info, &rdata->info); in pj_stun_session_create_res()
902 *p_tdata = tdata; in pj_stun_session_create_res()
946 pj_stun_tx_data *tdata) in pj_stun_session_send_msg() argument
950 PJ_ASSERT_RETURN(sess && addr_len && server && tdata, PJ_EINVAL); in pj_stun_session_send_msg()
962 tdata->max_len = PJ_STUN_MAX_PKT_LEN; in pj_stun_session_send_msg()
963 tdata->pkt = pj_pool_alloc(tdata->pool, tdata->max_len); in pj_stun_session_send_msg()
965 tdata->token = token; in pj_stun_session_send_msg()
966 tdata->retransmit = retransmit; in pj_stun_session_send_msg()
969 status = apply_msg_options(sess, tdata->pool, &tdata->auth_info, in pj_stun_session_send_msg()
970 tdata->msg); in pj_stun_session_send_msg()
972 pj_stun_msg_destroy_tdata(sess, tdata); in pj_stun_session_send_msg()
978 status = pj_stun_msg_encode(tdata->msg, (pj_uint8_t*)tdata->pkt, in pj_stun_session_send_msg()
979 tdata->max_len, 0, in pj_stun_session_send_msg()
980 &tdata->auth_info.auth_key, in pj_stun_session_send_msg()
981 &tdata->pkt_size); in pj_stun_session_send_msg()
983 pj_stun_msg_destroy_tdata(sess, tdata); in pj_stun_session_send_msg()
989 dump_tx_msg(sess, tdata->msg, (unsigned)tdata->pkt_size, server); in pj_stun_session_send_msg()
994 if (PJ_STUN_IS_REQUEST(tdata->msg->hdr.type)) { in pj_stun_session_send_msg()
997 status = pj_stun_client_tsx_create(sess->cfg, tdata->pool, in pj_stun_session_send_msg()
999 &tsx_cb, &tdata->client_tsx); in pj_stun_session_send_msg()
1001 pj_stun_client_tsx_set_data(tdata->client_tsx, (void*)tdata); in pj_stun_session_send_msg()
1004 tdata->addr_len = addr_len; in pj_stun_session_send_msg()
1005 tdata->dst_addr = server; in pj_stun_session_send_msg()
1008 status = pj_stun_client_tsx_send_msg(tdata->client_tsx, retransmit, in pj_stun_session_send_msg()
1009 tdata->pkt, in pj_stun_session_send_msg()
1010 (unsigned)tdata->pkt_size); in pj_stun_session_send_msg()
1012 pj_stun_msg_destroy_tdata(sess, tdata); in pj_stun_session_send_msg()
1018 tsx_add(sess, tdata); in pj_stun_session_send_msg()
1023 (PJ_STUN_IS_SUCCESS_RESPONSE(tdata->msg->hdr.type) || in pj_stun_session_send_msg()
1024 PJ_STUN_IS_ERROR_RESPONSE(tdata->msg->hdr.type))) in pj_stun_session_send_msg()
1029 status = pj_grp_lock_create(tdata->pool, NULL, &tdata->grp_lock); in pj_stun_session_send_msg()
1031 pj_stun_msg_destroy_tdata(sess, tdata); in pj_stun_session_send_msg()
1035 pj_grp_lock_add_ref(tdata->grp_lock); in pj_stun_session_send_msg()
1036 pj_grp_lock_add_handler(tdata->grp_lock, tdata->pool, tdata, in pj_stun_session_send_msg()
1044 pj_memset(&tdata->res_timer, 0, sizeof(tdata->res_timer)); in pj_stun_session_send_msg()
1045 pj_timer_entry_init(&tdata->res_timer, PJ_FALSE, tdata, in pj_stun_session_send_msg()
1052 &tdata->res_timer, in pj_stun_session_send_msg()
1054 tdata->grp_lock); in pj_stun_session_send_msg()
1056 pj_stun_msg_destroy_tdata(sess, tdata); in pj_stun_session_send_msg()
1061 pj_list_push_back(&sess->cached_response_list, tdata); in pj_stun_session_send_msg()
1065 status = sess->cb.on_send_msg(sess, token, tdata->pkt, in pj_stun_session_send_msg()
1066 tdata->pkt_size, server, addr_len); in pj_stun_session_send_msg()
1069 pj_stun_msg_destroy_tdata(sess, tdata); in pj_stun_session_send_msg()
1075 if (tdata->res_timer.id == 0) { in pj_stun_session_send_msg()
1076 pj_stun_msg_destroy_tdata(sess, tdata); in pj_stun_session_send_msg()
1104 pj_stun_tx_data *tdata; in pj_stun_session_respond() local
1114 &tdata); in pj_stun_session_respond()
1121 dst_addr, addr_len, tdata); in pj_stun_session_respond()
1132 pj_stun_tx_data *tdata, in pj_stun_session_cancel_req() argument
1136 PJ_ASSERT_RETURN(sess && tdata, PJ_EINVAL); in pj_stun_session_cancel_req()
1138 PJ_ASSERT_RETURN(PJ_STUN_IS_REQUEST(tdata->msg->hdr.type), PJ_EINVAL); in pj_stun_session_cancel_req()
1148 (sess->cb.on_request_complete)(sess, notify_status, tdata->token, in pj_stun_session_cancel_req()
1149 tdata, NULL, NULL, 0); in pj_stun_session_cancel_req()
1153 pj_stun_msg_destroy_tdata(sess, tdata); in pj_stun_session_cancel_req()
1164 pj_stun_tx_data *tdata, in pj_stun_session_retransmit_req() argument
1169 PJ_ASSERT_RETURN(sess && tdata, PJ_EINVAL); in pj_stun_session_retransmit_req()
1170 PJ_ASSERT_RETURN(PJ_STUN_IS_REQUEST(tdata->msg->hdr.type), PJ_EINVAL); in pj_stun_session_retransmit_req()
1179 status = pj_stun_client_tsx_retransmit(tdata->client_tsx, mod_count); in pj_stun_session_retransmit_req()
1268 pj_stun_tx_data *tdata; in on_incoming_response() local
1272 tdata = tsx_lookup(sess, msg); in on_incoming_response()
1273 if (tdata == NULL) { in on_incoming_response()
1286 tdata->auth_info.auth_key.slen != 0 && in on_incoming_response()
1290 &tdata->auth_info.auth_key); in on_incoming_response()
1302 status = pj_stun_client_tsx_on_rx_msg(tdata->client_tsx, msg, in on_incoming_response()