From ec50b7fbf08b5a826ae9d0cc814edc5406539735 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Thu, 4 Jun 2009 15:29:14 +0000 Subject: More ticket #878 (New PJLIB API to parse socket address string): - updated PJSUA-LIB to use the new API git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2744 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/src/pjsua-lib/pjsua_core.c | 77 ++++++++++------------------------------ 1 file changed, 18 insertions(+), 59 deletions(-) (limited to 'pjsip/src/pjsua-lib') diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c index 4cf8cd0e..30ae00e7 100644 --- a/pjsip/src/pjsua-lib/pjsua_core.c +++ b/pjsip/src/pjsua-lib/pjsua_core.c @@ -871,34 +871,16 @@ static void stun_dns_srv_resolver_cb(void *user_data, * it with gethostbyname() */ if (pjsua_var.ua_cfg.stun_host.slen) { - pj_str_t str_host, str_port; - int port; - pj_hostent he; - - str_port.ptr = pj_strchr(&pjsua_var.ua_cfg.stun_host, ':'); - if (str_port.ptr != NULL) { - str_host.ptr = pjsua_var.ua_cfg.stun_host.ptr; - str_host.slen = (str_port.ptr - str_host.ptr); - str_port.ptr++; - str_port.slen = pjsua_var.ua_cfg.stun_host.slen - - str_host.slen - 1; - port = (int)pj_strtoul(&str_port); - if (port < 1 || port > 65535) { - pjsua_perror(THIS_FILE, "Invalid STUN server", PJ_EINVAL); - pjsua_var.stun_status = PJ_EINVAL; - return; - } + pjsua_var.stun_status = + pj_sockaddr_parse(pj_AF_INET(), 0, + &pjsua_var.ua_cfg.stun_host, + &pjsua_var.stun_srv); + if (pjsua_var.stun_status != PJ_SUCCESS) { + pjsua_perror(THIS_FILE, "Invalid STUN server", + pjsua_var.stun_status); } else { - str_host = pjsua_var.ua_cfg.stun_host; - port = 3478; - } - - pjsua_var.stun_status = pj_gethostbyname(&str_host, &he); - - if (pjsua_var.stun_status == PJ_SUCCESS) { - pj_sockaddr_in_init(&pjsua_var.stun_srv.ipv4, NULL, 0); - pjsua_var.stun_srv.ipv4.sin_addr = *(pj_in_addr*)he.h_addr; - pjsua_var.stun_srv.ipv4.sin_port = pj_htons((pj_uint16_t)port); + if (pj_sockaddr_get_port(&pjsua_var.stun_srv)==0) + pj_sockaddr_set_port(&pjsua_var.stun_srv, 3478); PJ_LOG(3,(THIS_FILE, "STUN server %.*s resolved, address is %s:%d", @@ -988,42 +970,19 @@ pj_status_t pjsua_resolve_stun_server(pj_bool_t wait) * gethostbyname(). */ else if (pjsua_var.ua_cfg.stun_host.slen) { - pj_str_t str_host, str_port; - int port; - pj_hostent he; - - str_port.ptr = pj_strchr(&pjsua_var.ua_cfg.stun_host, ':'); - if (str_port.ptr != NULL) { - str_host.ptr = pjsua_var.ua_cfg.stun_host.ptr; - str_host.slen = (str_port.ptr - str_host.ptr); - str_port.ptr++; - str_port.slen = pjsua_var.ua_cfg.stun_host.slen - - str_host.slen - 1; - port = (int)pj_strtoul(&str_port); - if (port < 1 || port > 65535) { - pjsua_perror(THIS_FILE, "Invalid STUN server", PJ_EINVAL); - pjsua_var.stun_status = PJ_EINVAL; - return pjsua_var.stun_status; - } - } else { - str_host = pjsua_var.ua_cfg.stun_host; - port = 3478; - } - pjsua_var.stun_status = - pj_sockaddr_in_init(&pjsua_var.stun_srv.ipv4, &str_host, - (pj_uint16_t)port); - + pj_sockaddr_parse(pj_AF_INET(), 0, + &pjsua_var.ua_cfg.stun_host, + &pjsua_var.stun_srv); if (pjsua_var.stun_status != PJ_SUCCESS) { - pjsua_var.stun_status = pj_gethostbyname(&str_host, &he); - - if (pjsua_var.stun_status == PJ_SUCCESS) { - pj_sockaddr_in_init(&pjsua_var.stun_srv.ipv4, NULL, 0); - pjsua_var.stun_srv.ipv4.sin_addr = *(pj_in_addr*)he.h_addr; - pjsua_var.stun_srv.ipv4.sin_port = pj_htons((pj_uint16_t)port); - } + pjsua_perror(THIS_FILE, "Invalid STUN server", + pjsua_var.stun_status); + return pjsua_var.stun_status; } + if (pj_sockaddr_get_port(&pjsua_var.stun_srv)==0) + pj_sockaddr_set_port(&pjsua_var.stun_srv, 3478); + PJ_LOG(3,(THIS_FILE, "STUN server %.*s resolved, address is %s:%d", (int)pjsua_var.ua_cfg.stun_host.slen, -- cgit v1.2.3