Changeset 1546


Ignore:
Timestamp:
Nov 3, 2007 10:44:14 PM (12 years ago)
Author:
bennylp
Message:

Only do Test 1B if Test 2 failed

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjnath/src/pjnath/nat_detect.c

    r1526 r1546  
    103103        pj_sockaddr_in  ma; 
    104104        pj_sockaddr_in  ca; 
     105        pj_stun_tx_data *tdata; 
    105106    } result[ST_MAX]; 
    106107 
     
    549550    } 
    550551 
    551     if (test_id == ST_TEST_1 && status == PJ_SUCCESS) { 
     552    /* Send Test 1B only when Test 2 completes. Must not send Test 1B 
     553     * before Test 2 completes to avoid creating mapping on the NAT. 
     554     */ 
     555    if (!sess->result[ST_TEST_1B].executed &&  
     556        sess->result[ST_TEST_2].complete && 
     557        sess->result[ST_TEST_2].status != PJ_SUCCESS && 
     558        sess->result[ST_TEST_1].complete && 
     559        sess->result[ST_TEST_1].status == PJ_SUCCESS)  
     560    { 
    552561        cmp = pj_memcmp(&sess->local_addr, &sess->result[ST_TEST_1].ma, 
    553562                        sizeof(pj_sockaddr_in)); 
    554563        if (cmp != 0) 
    555             send_test(sess, ST_TEST_1B, &sess->result[test_id].ca, 0); 
     564            send_test(sess, ST_TEST_1B, &sess->result[ST_TEST_1].ca, 0); 
    556565    } 
    557566 
     
    760769                             pj_uint32_t change_flag) 
    761770{ 
    762     pj_stun_tx_data *tdata; 
    763771    pj_uint32_t magic, tsx_id[3]; 
    764772    pj_status_t status; 
     
    778786    status = pj_stun_session_create_req(sess->stun_sess,  
    779787                                        PJ_STUN_BINDING_REQUEST, magic, 
    780                                         (pj_uint8_t*)tsx_id, &tdata); 
     788                                        (pj_uint8_t*)tsx_id,  
     789                                        &sess->result[test_id].tdata); 
    781790    if (status != PJ_SUCCESS) 
    782791        goto on_error; 
    783792 
    784793    /* Add CHANGE-REQUEST attribute */ 
    785     status = pj_stun_msg_add_uint_attr(sess->pool, tdata->msg, 
     794    status = pj_stun_msg_add_uint_attr(sess->pool,  
     795                                       sess->result[test_id].tdata->msg, 
    786796                                       PJ_STUN_ATTR_CHANGE_REQUEST, 
    787797                                       change_flag); 
     
    805815                                      sess->cur_server,  
    806816                                      sizeof(pj_sockaddr_in), 
    807                                       tdata); 
     817                                      sess->result[test_id].tdata); 
    808818    if (status != PJ_SUCCESS) 
    809819        goto on_error; 
Note: See TracChangeset for help on using the changeset viewer.