Changeset 1913 for pjproject/trunk/pjnath/src/pjnath/stun_session.c
- Timestamp:
- Apr 9, 2008 9:38:12 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjnath/src/pjnath/stun_session.c
r1903 r1913 350 350 351 351 /* Retry the request */ 352 status = pj_stun_session_send_msg(sess, PJ_TRUE, src_addr, 352 status = pj_stun_session_send_msg(sess, request->token, PJ_TRUE, 353 request->retransmit, src_addr, 353 354 src_addr_len, tdata); 354 355 … … 378 379 379 380 if (notify_user && sess->cb.on_request_complete) { 380 (*sess->cb.on_request_complete)(sess, status, tdata, 381 response, 382 src_addr, src_addr_len); 381 (*sess->cb.on_request_complete)(sess, status, tdata->token, tdata, 382 response, src_addr, src_addr_len); 383 383 } 384 384 … … 398 398 tdata = (pj_stun_tx_data*) pj_stun_client_tsx_get_data(tsx); 399 399 400 return tdata->sess->cb.on_send_msg(tdata->sess, stun_pkt, pkt_size, 401 tdata->dst_addr, tdata->addr_len); 400 return tdata->sess->cb.on_send_msg(tdata->sess, tdata->token, stun_pkt, 401 pkt_size, tdata->dst_addr, 402 tdata->addr_len); 402 403 } 403 404 … … 731 732 732 733 PJ_DEF(pj_status_t) pj_stun_session_send_msg( pj_stun_session *sess, 734 void *token, 733 735 pj_bool_t cache_res, 736 pj_bool_t retransmit, 734 737 const pj_sockaddr_t *server, 735 738 unsigned addr_len, … … 743 746 tdata->max_len = PJ_STUN_MAX_PKT_LEN; 744 747 tdata->pkt = pj_pool_alloc(tdata->pool, tdata->max_len); 748 749 tdata->token = token; 750 tdata->retransmit = retransmit; 745 751 746 752 /* Start locking the session now */ … … 788 794 789 795 /* Send the request! */ 790 status = pj_stun_client_tsx_send_msg(tdata->client_tsx, PJ_TRUE,796 status = pj_stun_client_tsx_send_msg(tdata->client_tsx, retransmit, 791 797 tdata->pkt, tdata->pkt_size); 792 798 if (status != PJ_SUCCESS && status != PJ_EPENDING) { … … 829 835 830 836 /* Otherwise for non-request message, send directly to transport. */ 831 status = sess->cb.on_send_msg(sess, t data->pkt, tdata->pkt_size,832 server, addr_len);837 status = sess->cb.on_send_msg(sess, token, tdata->pkt, 838 tdata->pkt_size, server, addr_len); 833 839 834 840 if (status != PJ_SUCCESS && status != PJ_EPENDING) { … … 855 861 unsigned code, 856 862 const char *errmsg, 863 void *token, 857 864 pj_bool_t cache, 858 865 const pj_sockaddr_t *dst_addr, … … 869 876 return status; 870 877 871 return pj_stun_session_send_msg(sess, cache, dst_addr, addr_len, tdata); 878 return pj_stun_session_send_msg(sess, token, cache, PJ_FALSE, 879 dst_addr, addr_len, tdata); 872 880 } 873 881 … … 888 896 889 897 if (notify) { 890 (sess->cb.on_request_complete)(sess, notify_status, tdata , NULL,891 NULL, 0);898 (sess->cb.on_request_complete)(sess, notify_status, tdata->token, 899 tdata, NULL, NULL, 0); 892 900 } 893 901 … … 921 929 922 930 /* Send response */ 923 static pj_status_t send_response(pj_stun_session *sess, 931 static pj_status_t send_response(pj_stun_session *sess, void *token, 924 932 pj_pool_t *pool, pj_stun_msg *response, 925 933 const pj_stun_req_cred_info *auth_info, … … 954 962 955 963 /* Send packet */ 956 status = sess->cb.on_send_msg(sess, out_pkt, out_len, addr, addr_len); 964 status = sess->cb.on_send_msg(sess, token, out_pkt, out_len, 965 addr, addr_len); 957 966 958 967 return status; … … 961 970 /* Authenticate incoming message */ 962 971 static pj_status_t authenticate_req(pj_stun_session *sess, 972 void *token, 963 973 const pj_uint8_t *pkt, 964 974 unsigned pkt_len, … … 982 992 if (status != PJ_SUCCESS && response != NULL) { 983 993 PJ_LOG(5,(SNAME(sess), "Message authentication failed")); 984 send_response(sess, t mp_pool, response, &rdata->info, PJ_FALSE,985 src_addr, src_addr_len);994 send_response(sess, token, tmp_pool, response, &rdata->info, 995 PJ_FALSE, src_addr, src_addr_len); 986 996 } 987 997 … … 1071 1081 "Request retransmission, sending cached response")); 1072 1082 1073 send_response(sess, t mp_pool, t->msg, &t->auth_info, PJ_TRUE,1074 src_addr, src_addr_len);1083 send_response(sess, t->token, tmp_pool, t->msg, &t->auth_info, 1084 PJ_TRUE, src_addr, src_addr_len); 1075 1085 return PJ_SUCCESS; 1076 1086 } … … 1082 1092 static pj_status_t on_incoming_request(pj_stun_session *sess, 1083 1093 unsigned options, 1094 void *token, 1084 1095 pj_pool_t *tmp_pool, 1085 1096 const pj_uint8_t *in_pkt, … … 1103 1114 */ 1104 1115 if ((options & PJ_STUN_NO_AUTHENTICATE) == 0) { 1105 status = authenticate_req(sess, (const pj_uint8_t*) in_pkt, in_pkt_len, 1106 &rdata, tmp_pool, src_addr, src_addr_len); 1116 status = authenticate_req(sess, token, (const pj_uint8_t*) in_pkt, 1117 in_pkt_len,&rdata, tmp_pool, src_addr, 1118 src_addr_len); 1107 1119 if (status != PJ_SUCCESS) { 1108 1120 return status; … … 1113 1125 if (sess->cb.on_rx_request) { 1114 1126 status = (*sess->cb.on_rx_request)(sess, in_pkt, in_pkt_len, &rdata, 1115 src_addr, src_addr_len);1127 token, src_addr, src_addr_len); 1116 1128 } else { 1117 1129 pj_str_t err_text; … … 1123 1135 &err_text, &response); 1124 1136 if (status == PJ_SUCCESS && response) { 1125 status = send_response(sess, t mp_pool, response,1137 status = send_response(sess, token, tmp_pool, response, 1126 1138 NULL, PJ_FALSE, src_addr, src_addr_len); 1127 1139 } … … 1134 1146 /* Handle incoming indication */ 1135 1147 static pj_status_t on_incoming_indication(pj_stun_session *sess, 1148 void *token, 1136 1149 pj_pool_t *tmp_pool, 1137 1150 const pj_uint8_t *in_pkt, … … 1146 1159 if (sess->cb.on_rx_indication) { 1147 1160 return (*sess->cb.on_rx_indication)(sess, in_pkt, in_pkt_len, msg, 1148 src_addr, src_addr_len);1161 token, src_addr, src_addr_len); 1149 1162 } else { 1150 1163 return PJ_SUCCESS; … … 1157 1170 pj_size_t pkt_size, 1158 1171 unsigned options, 1172 void *token, 1159 1173 unsigned *parsed_len, 1160 1174 const pj_sockaddr_t *src_addr, … … 1181 1195 LOG_ERR_(sess, "STUN msg_decode() error", status); 1182 1196 if (response) { 1183 send_response(sess, t mp_pool, response, NULL,1197 send_response(sess, token, tmp_pool, response, NULL, 1184 1198 PJ_FALSE, src_addr, src_addr_len); 1185 1199 } … … 1218 1232 } else if (PJ_STUN_IS_REQUEST(msg->hdr.type)) { 1219 1233 1220 status = on_incoming_request(sess, options, t mp_pool,1234 status = on_incoming_request(sess, options, token, tmp_pool, 1221 1235 (const pj_uint8_t*) packet, pkt_size, 1222 1236 msg, src_addr, src_addr_len); … … 1224 1238 } else if (PJ_STUN_IS_INDICATION(msg->hdr.type)) { 1225 1239 1226 status = on_incoming_indication(sess, t mp_pool,1240 status = on_incoming_indication(sess, token, tmp_pool, 1227 1241 (const pj_uint8_t*) packet, pkt_size, 1228 1242 msg, src_addr, src_addr_len);
Note: See TracChangeset
for help on using the changeset viewer.