Changeset 1184


Ignore:
Timestamp:
Apr 10, 2007 10:35:00 AM (12 years ago)
Author:
bennylp
Message:

Allow stun_host settin in pjsua to have port number

Location:
pjproject/trunk/pjsip
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/include/pjsua-lib/pjsua.h

    r1135 r1184  
    914914 
    915915    /** 
    916      * Specify STUN server to be used. 
     916     * Specify STUN server to be used, in "HOST[:PORT]" format. If port is 
     917     * not specified, default port 3478 will be used. 
    917918     */ 
    918919    pj_str_t        stun_host; 
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_core.c

    r1159 r1184  
    679679         */ 
    680680        if (pjsua_var.ua_cfg.stun_host.slen) { 
     681            pj_str_t str_host, str_port; 
     682            int port; 
    681683            pj_hostent he; 
    682684 
    683             pjsua_var.stun_status = pj_gethostbyname(&pjsua_var.ua_cfg.stun_host, &he); 
     685            str_port.ptr = pj_strchr(&pjsua_var.ua_cfg.stun_host, ':'); 
     686            if (str_port.ptr != NULL) { 
     687                str_host.ptr = pjsua_var.ua_cfg.stun_host.ptr; 
     688                str_host.slen = (str_port.ptr - str_host.ptr); 
     689                str_port.ptr++; 
     690                str_port.slen = pjsua_var.ua_cfg.stun_host.slen -  
     691                                str_host.slen - 1; 
     692                port = (int)pj_strtoul(&str_port); 
     693                if (port < 1 || port > 65535) { 
     694                    pjsua_perror(THIS_FILE, "Invalid STUN server", PJ_EINVAL); 
     695                    pjsua_var.stun_status = PJ_EINVAL; 
     696                    return; 
     697                } 
     698            } else { 
     699                str_host = pjsua_var.ua_cfg.stun_host; 
     700                port = 3478; 
     701            } 
     702 
     703            pjsua_var.stun_status = pj_gethostbyname(&str_host, &he); 
    684704 
    685705            if (pjsua_var.stun_status == PJ_SUCCESS) { 
    686706                pj_sockaddr_in_init(&pjsua_var.stun_srv.ipv4, NULL, 0); 
    687707                pjsua_var.stun_srv.ipv4.sin_addr = *(pj_in_addr*)he.h_addr; 
    688                 pjsua_var.stun_srv.ipv4.sin_port = pj_htons((pj_uint16_t)3478); 
     708                pjsua_var.stun_srv.ipv4.sin_port = pj_htons((pj_uint16_t)port); 
    689709 
    690710                PJ_LOG(3,(THIS_FILE,  
     
    773793         */ 
    774794        else if (pjsua_var.ua_cfg.stun_host.slen) { 
     795            pj_str_t str_host, str_port; 
     796            int port; 
    775797            pj_hostent he; 
    776798 
    777             pjsua_var.stun_status = pj_gethostbyname(&pjsua_var.ua_cfg.stun_host, &he); 
     799            str_port.ptr = pj_strchr(&pjsua_var.ua_cfg.stun_host, ':'); 
     800            if (str_port.ptr != NULL) { 
     801                str_host.ptr = pjsua_var.ua_cfg.stun_host.ptr; 
     802                str_host.slen = (str_port.ptr - str_host.ptr); 
     803                str_port.ptr++; 
     804                str_port.slen = pjsua_var.ua_cfg.stun_host.slen -  
     805                                str_host.slen - 1; 
     806                port = (int)pj_strtoul(&str_port); 
     807                if (port < 1 || port > 65535) { 
     808                    pjsua_perror(THIS_FILE, "Invalid STUN server", PJ_EINVAL); 
     809                    pjsua_var.stun_status = PJ_EINVAL; 
     810                    return pjsua_var.stun_status; 
     811                } 
     812            } else { 
     813                str_host = pjsua_var.ua_cfg.stun_host; 
     814                port = 3478; 
     815            } 
     816 
     817 
     818            pjsua_var.stun_status = pj_gethostbyname(&str_host, &he); 
    778819 
    779820            if (pjsua_var.stun_status == PJ_SUCCESS) { 
    780821                pj_sockaddr_in_init(&pjsua_var.stun_srv.ipv4, NULL, 0); 
    781822                pjsua_var.stun_srv.ipv4.sin_addr = *(pj_in_addr*)he.h_addr; 
    782                 pjsua_var.stun_srv.ipv4.sin_port = pj_htons((pj_uint16_t)3478); 
     823                pjsua_var.stun_srv.ipv4.sin_port = pj_htons((pj_uint16_t)port); 
    783824 
    784825                PJ_LOG(3,(THIS_FILE,  
     
    10561097         */ 
    10571098        status = pjstun_get_mapped_addr(&pjsua_var.cp.factory, 1, &sock, 
    1058                                          &stun_srv, 3478, 
    1059                                          &stun_srv, 3478, 
     1099                                         &stun_srv, pj_ntohs(pjsua_var.stun_srv.ipv4.sin_port), 
     1100                                         &stun_srv, pj_ntohs(pjsua_var.stun_srv.ipv4.sin_port), 
    10601101                                         p_pub_addr); 
    10611102        if (status != PJ_SUCCESS) { 
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c

    r1156 r1184  
    290290 
    291291            status=pjstun_get_mapped_addr(&pjsua_var.cp.factory, 2, sock, 
    292                                            &stun_srv, 3478, 
    293                                            &stun_srv, 3478, 
     292                                           &stun_srv, pj_ntohs(pjsua_var.stun_srv.ipv4.sin_port), 
     293                                           &stun_srv, pj_ntohs(pjsua_var.stun_srv.ipv4.sin_port), 
    294294                                           mapped_addr); 
    295295            if (status != PJ_SUCCESS) { 
Note: See TracChangeset for help on using the changeset viewer.