Ignore:
Timestamp:
Mar 20, 2008 4:32:06 PM (14 years ago)
Author:
bennylp
Message:

More ticket #485: client and server self tested

File:
1 edited

Legend:

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

    r1877 r1879  
    189189    sess->ka_interval = PJ_TURN_KEEP_ALIVE_SEC; 
    190190    sess->user_data = user_data; 
     191    sess->next_ch = PJ_TURN_CHANNEL_MIN; 
    191192 
    192193    /* Copy callback */ 
     
    326327        /* Send REFRESH with LIFETIME=0 */ 
    327328        can_destroy = PJ_FALSE; 
    328         sess->pending_destroy = PJ_TRUE; 
     329        send_refresh(sess, 0); 
    329330        break; 
    330331    case PJ_TURN_STATE_DEALLOCATING: 
     
    779780    pj_stun_msg_add_uint_attr(tdata->pool, tdata->msg, 
    780781                              PJ_STUN_ATTR_CHANNEL_NUMBER, 
    781                               PJ_STUN_SET_CH_NB(sess->next_ch)); 
     782                              PJ_STUN_SET_CH_NB(ch_num)); 
    782783 
    783784    /* Add PEER-ADDRESS attribute */ 
     
    10241025     
    10251026    /* Save relayed address */ 
    1026     pj_memcpy(&sess->relay_addr, &raddr_attr->sockaddr, sizeof(pj_sockaddr)); 
     1027    if (raddr_attr) { 
     1028        /* If we already have relay address, check if the relay address  
     1029         * in the response matches our relay address. 
     1030         */ 
     1031        if (pj_sockaddr_has_addr(&sess->relay_addr)) { 
     1032            if (pj_sockaddr_cmp(&sess->relay_addr, &raddr_attr->sockaddr)) { 
     1033                on_session_fail(sess, method, PJNATH_EINSTUNMSG, 
     1034                                pj_cstr(&s, "Error: different RELAY-ADDRESS is" 
     1035                                            "returned by server")); 
     1036                return; 
     1037            } 
     1038        } else { 
     1039            /* Otherwise save the relayed address */ 
     1040            pj_memcpy(&sess->relay_addr, &raddr_attr->sockaddr,  
     1041                      sizeof(pj_sockaddr)); 
     1042        } 
     1043    } 
    10271044 
    10281045    /* Success */ 
     
    11811198    pj_stun_data_attr *data_attr; 
    11821199 
     1200    PJ_UNUSED_ARG(pkt); 
     1201    PJ_UNUSED_ARG(pkt_len); 
    11831202    PJ_UNUSED_ARG(src_addr); 
    11841203    PJ_UNUSED_ARG(src_addr_len); 
     
    12101229    /* Notify application */ 
    12111230    if (sess->cb.on_rx_data) { 
    1212         (*sess->cb.on_rx_data)(sess, pkt, pkt_len,  
     1231        (*sess->cb.on_rx_data)(sess, data_attr->data, data_attr->length,  
    12131232                               &peer_attr->sockaddr, 
    12141233                               pj_sockaddr_get_len(&peer_attr->sockaddr)); 
     
    12991318 
    13001319        if (bind_channel) { 
     1320            pj_uint32_t hval = 0; 
    13011321            /* Register by channel number */ 
    13021322            pj_assert(peer->ch_id != PJ_TURN_INVALID_CHANNEL && peer->bound); 
    1303             pj_assert(pj_hash_get(sess->peer_table, &peer->ch_id,  
    1304                                   sizeof(peer->ch_id), NULL)==0); 
    1305  
    1306             pj_hash_set(sess->pool, sess->peer_table, &peer->ch_id, 
    1307                         sizeof(peer->ch_id), 0, peer); 
     1323 
     1324            if (pj_hash_get(sess->peer_table, &peer->ch_id,  
     1325                            sizeof(peer->ch_id), &hval)==0) { 
     1326                pj_hash_set(sess->pool, sess->peer_table, &peer->ch_id, 
     1327                            sizeof(peer->ch_id), hval, peer); 
     1328            } 
    13081329        } 
    13091330    } 
     
    14061427            delay.msec = 0; 
    14071428 
     1429            sess->timer.id = TIMER_KEEP_ALIVE; 
    14081430            pj_timer_heap_schedule(sess->timer_heap, &sess->timer, &delay); 
    14091431        } 
     
    14151437        pj_lock_release(sess->lock); 
    14161438        do_destroy(sess); 
    1417     }     
    1418 } 
    1419  
     1439    } else { 
     1440        pj_assert(!"Unknown timer event"); 
     1441        pj_lock_release(sess->lock); 
     1442    } 
     1443} 
     1444 
Note: See TracChangeset for help on using the changeset viewer.