Ignore:
Timestamp:
Mar 13, 2008 3:11:29 PM (14 years ago)
Author:
bennylp
Message:

More ticket #485: added TURN client application

File:
1 edited

Legend:

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

    r1862 r1867  
    167167} 
    168168 
     169/** 
     170 * Get info. 
     171 */ 
     172PJ_DEF(pj_status_t) pj_turn_udp_get_info(pj_turn_udp *udp_rel, 
     173                                         pj_turn_session_info *info) 
     174{ 
     175    PJ_ASSERT_RETURN(udp_rel && info, PJ_EINVAL); 
     176 
     177    if (udp_rel->sess) { 
     178        return pj_turn_session_get_info(udp_rel->sess, info); 
     179    } else { 
     180        pj_bzero(info, sizeof(*info)); 
     181        info->state = PJ_TURN_STATE_NULL; 
     182        return PJ_SUCCESS; 
     183    } 
     184} 
     185 
    169186/* 
    170187 * Initialize. 
     
    179196    pj_status_t status; 
    180197 
     198    PJ_ASSERT_RETURN(udp_rel && domain, PJ_EINVAL); 
     199    PJ_ASSERT_RETURN(udp_rel->sess, PJ_EINVALIDOP); 
     200 
    181201    status = pj_turn_session_set_server(udp_rel->sess, domain, default_port, 
    182202                                        resolver); 
     
    184204        return status; 
    185205 
    186     status = pj_turn_session_set_cred(udp_rel->sess, cred); 
    187     if (status != PJ_SUCCESS) 
    188         return status; 
     206    if (cred) { 
     207        status = pj_turn_session_set_cred(udp_rel->sess, cred); 
     208        if (status != PJ_SUCCESS) 
     209            return status; 
     210    } 
    189211 
    190212    status = pj_turn_session_alloc(udp_rel->sess, param); 
     
    204226                                        unsigned addr_len) 
    205227{ 
     228    PJ_ASSERT_RETURN(udp_rel && addr && addr_len, PJ_EINVAL); 
     229 
     230    if (udp_rel->sess == NULL) 
     231        return PJ_EINVALIDOP; 
     232 
    206233    return pj_turn_session_sendto(udp_rel->sess, pkt, pkt_len,  
    207234                                  addr, addr_len); 
     
    215242                                              unsigned addr_len) 
    216243{ 
     244    PJ_ASSERT_RETURN(udp_rel && peer && addr_len, PJ_EINVAL); 
     245    PJ_ASSERT_RETURN(udp_rel->sess != NULL, PJ_EINVALIDOP); 
     246 
    217247    return pj_turn_session_bind_channel(udp_rel->sess, peer, addr_len); 
    218248} 
     
    233263    do { 
    234264        /* Report incoming packet to TURN session */ 
    235         if (bytes_read > 0) { 
     265        if (bytes_read > 0 && udp_rel->sess) { 
    236266            pj_turn_session_on_rx_pkt(udp_rel->sess, udp_rel->pkt,  
    237267                                      bytes_read, PJ_TRUE); 
     
    318348        (*udp_rel->cb.on_state)(udp_rel, old_state, new_state); 
    319349    } 
    320 } 
    321  
    322  
     350 
     351    if (new_state > PJ_TURN_STATE_READY) { 
     352        udp_rel->sess = NULL; 
     353    } 
     354} 
     355 
     356 
Note: See TracChangeset for help on using the changeset viewer.