Ignore:
Timestamp:
Feb 22, 2006 10:23:22 PM (18 years ago)
Author:
bennylp
Message:

Fixed STUN error

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsua/pjsua_core.c

    r212 r220  
    150150    }; 
    151151    int i; 
    152     pj_uint16_t rtp_port; 
     152    static pj_uint16_t rtp_port = RTP_START_PORT; 
    153153    pj_sock_t sock[3]; 
    154154    pj_sockaddr_in mapped_addr[3]; 
     
    158158        sock[i] = PJ_INVALID_SOCKET; 
    159159 
     160    /* Create and bind SIP UDP socket. */ 
     161    status = pj_sock_socket(PJ_AF_INET, PJ_SOCK_DGRAM, 0, &sock[SIP_SOCK]); 
     162    if (status != PJ_SUCCESS) { 
     163        pjsua_perror(THIS_FILE, "socket() error", status); 
     164        goto on_error; 
     165    } 
     166 
    160167    if (sip) { 
    161         /* Create and bind SIP UDP socket. */ 
    162         status = pj_sock_socket(PJ_AF_INET, PJ_SOCK_DGRAM, 0, &sock[SIP_SOCK]); 
    163         if (status != PJ_SUCCESS) { 
    164             pjsua_perror(THIS_FILE, "socket() error", status); 
    165             goto on_error; 
    166         } 
    167      
    168168        status = pj_sock_bind_in(sock[SIP_SOCK], 0, pjsua.sip_port); 
    169169        if (status != PJ_SUCCESS) { 
     
    171171            goto on_error; 
    172172        } 
    173     } 
    174  
    175     /* Initialize start of RTP port to try. */ 
    176     rtp_port = (pj_uint16_t)(RTP_START_PORT + (pj_rand() % RTP_RANDOM_START) / 2); 
     173    } else { 
     174        status = pj_sock_bind_in(sock[SIP_SOCK], 0, 0); 
     175        if (status != PJ_SUCCESS) { 
     176            pjsua_perror(THIS_FILE, "bind() error", status); 
     177            goto on_error; 
     178        } 
     179    } 
     180 
    177181 
    178182    /* Loop retry to bind RTP and RTCP sockets. */ 
     
    235239            if (sip) 
    236240                mapped_addr[SIP_SOCK].sin_port = pj_htons((pj_uint16_t)pjsua.sip_port); 
    237             else 
    238                 mapped_addr[RTP_SOCK].sin_port = pj_htons((pj_uint16_t)rtp_port); 
    239241            mapped_addr[RTP_SOCK].sin_port = pj_htons((pj_uint16_t)rtp_port); 
    240242            mapped_addr[RTCP_SOCK].sin_port = pj_htons((pj_uint16_t)(rtp_port+1)); 
     
    266268        pjsua.sip_sock = sock[SIP_SOCK]; 
    267269        pj_memcpy(&pjsua.sip_sock_name, &mapped_addr[SIP_SOCK], sizeof(pj_sockaddr_in)); 
     270    } else { 
     271        pj_sock_close(sock[0]); 
    268272    } 
    269273 
     
    288292              pj_ntohs(skinfo->rtcp_addr_name.sin_port))); 
    289293 
     294    rtp_port += 2; 
    290295    return PJ_SUCCESS; 
    291296 
     
    455460    } 
    456461 
     462    /* Init PJLIB-UTIL: */ 
     463 
     464    status = pjlib_util_init(); 
     465    if (status != PJ_SUCCESS) { 
     466        pjsua_perror(THIS_FILE, "pjlib_util_init() error", status); 
     467        return status; 
     468    } 
     469 
    457470    /* Init memory pool: */ 
    458471 
Note: See TracChangeset for help on using the changeset viewer.