From 58d6c60c881d265cee8c5ca5dbaad545ff44e995 Mon Sep 17 00:00:00 2001 From: Liong Sauw Ming Date: Fri, 20 May 2016 04:17:00 +0000 Subject: Re #1922: Replace IPv4 specific APIs as per Apple's recommendations https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW27 git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5311 74dad513-b988-da41-8d7b-12977e46ad98 --- pjlib-util/src/pjlib-util/cli_telnet.c | 3 ++- pjlib-util/src/pjlib-util/dns_dump.c | 5 +++-- pjlib-util/src/pjlib-util/pcap.c | 8 ++++++-- pjlib-util/src/pjlib-util/resolver.c | 25 ++++++++++++++++------- pjlib-util/src/pjlib-util/srv_resolver.c | 22 ++++++++++++-------- pjlib-util/src/pjlib-util/stun_simple_client.c | 1 - pjlib/src/pjlib-test/echo_clt.c | 4 +++- pjmedia/src/pjmedia/endpoint.c | 11 ++++------ pjmedia/src/pjmedia/sdp.c | 7 ++++--- pjnath/src/pjnath/nat_detect.c | 11 +++++++--- pjnath/src/pjnath/stun_msg_dump.c | 6 ++++-- pjsip-apps/src/samples/proxy.h | 16 ++++++++++----- pjsip-apps/src/samples/siprtp.c | 6 +++--- pjsip-apps/src/samples/streamutil.c | 7 +++++-- pjsip-apps/src/samples/vid_streamutil.c | 7 +++++-- pjsip/src/pjsip/sip_resolve.c | 6 +++--- pjsip/src/pjsip/sip_transport_udp.c | 28 +++++++++----------------- pjsip/src/pjsua-lib/pjsua_acc.c | 4 ++-- pjsip/src/pjsua-lib/pjsua_core.c | 3 ++- pjsip/src/pjsua-lib/pjsua_media.c | 7 +++---- pjsip/src/test/transport_tcp_test.c | 4 +++- pjsip/src/test/transport_test.c | 5 +++-- 22 files changed, 116 insertions(+), 80 deletions(-) diff --git a/pjlib-util/src/pjlib-util/cli_telnet.c b/pjlib-util/src/pjlib-util/cli_telnet.c index 16baa7de..c6ce6eff 100644 --- a/pjlib-util/src/pjlib-util/cli_telnet.c +++ b/pjlib-util/src/pjlib-util/cli_telnet.c @@ -1928,7 +1928,8 @@ PJ_DEF(pj_status_t) pj_cli_telnet_get_info(pj_cli_front_end *fe, if (status != PJ_SUCCESS) return status; - pj_strcpy2(&info->ip_address, pj_inet_ntoa(hostip.ipv4.sin_addr)); + pj_sockaddr_print(&hostip, info->buf_, sizeof(info->buf_), 0); + pj_strset2(&info->ip_address, info->buf_); info->port = tfe->cfg.port; diff --git a/pjlib-util/src/pjlib-util/dns_dump.c b/pjlib-util/src/pjlib-util/dns_dump.c index fdf29318..ab9ca684 100644 --- a/pjlib-util/src/pjlib-util/dns_dump.c +++ b/pjlib-util/src/pjlib-util/dns_dump.c @@ -90,6 +90,7 @@ static void dump_answer(unsigned index, const pj_dns_parsed_rr *rr) const pj_str_t root_name = { "", 6 }; const pj_str_t *name = &rr->name; char ttl_words[32]; + char addr[PJ_INET6_ADDRSTRLEN]; if (name->slen == 0) name = &root_name; @@ -117,9 +118,9 @@ static void dump_answer(unsigned index, const pj_dns_parsed_rr *rr) rr->rdata.cname.name.ptr)); } else if (rr->type == PJ_DNS_TYPE_A) { PJ_LOG(3,(THIS_FILE, " IP address: %s", - pj_inet_ntoa(rr->rdata.a.ip_addr))); + pj_inet_ntop2(pj_AF_INET(), &rr->rdata.a.ip_addr, + addr, sizeof(addr)))); } else if (rr->type == PJ_DNS_TYPE_AAAA) { - char addr[PJ_INET6_ADDRSTRLEN]; PJ_LOG(3,(THIS_FILE, " IPv6 address: %s", pj_inet_ntop2(pj_AF_INET6(), &rr->rdata.aaaa.ip_addr, addr, sizeof(addr)))); diff --git a/pjlib-util/src/pjlib-util/pcap.c b/pjlib-util/src/pjlib-util/pcap.c index 2ddcc59b..dd961b7a 100644 --- a/pjlib-util/src/pjlib-util/pcap.c +++ b/pjlib-util/src/pjlib-util/pcap.c @@ -229,9 +229,11 @@ PJ_DEF(pj_status_t) pj_pcap_read_udp(pj_pcap_file *file, unsigned rec_incl; pj_ssize_t sz; pj_size_t sz_read = 0; + char addr[PJ_INET_ADDRSTRLEN]; pj_status_t status; TRACE_((file->obj_name, "Reading packet..")); + pj_bzero(&addr, sizeof(addr)); /* Read PCAP packet header */ sz = sizeof(tmp.rec); @@ -282,7 +284,8 @@ PJ_DEF(pj_status_t) pj_pcap_read_udp(pj_pcap_file *file, /* Skip if IP source mismatch */ if (file->filter.ip_src && tmp.ip.ip_src != file->filter.ip_src) { TRACE_((file->obj_name, "IP source %s mismatch, skipping", - pj_inet_ntoa(*(pj_in_addr*)&tmp.ip.ip_src))); + pj_inet_ntop2(pj_AF_INET(), (pj_in_addr*)&tmp.ip.ip_src, + addr, sizeof(addr)))); SKIP_PKT(); continue; } @@ -290,7 +293,8 @@ PJ_DEF(pj_status_t) pj_pcap_read_udp(pj_pcap_file *file, /* Skip if IP destination mismatch */ if (file->filter.ip_dst && tmp.ip.ip_dst != file->filter.ip_dst) { TRACE_((file->obj_name, "IP detination %s mismatch, skipping", - pj_inet_ntoa(*(pj_in_addr*)&tmp.ip.ip_dst))); + pj_inet_ntop2(pj_AF_INET(), (pj_in_addr*)&tmp.ip.ip_dst, + addr, sizeof(addr)))); SKIP_PKT(); continue; } diff --git a/pjlib-util/src/pjlib-util/resolver.c b/pjlib-util/src/pjlib-util/resolver.c index c7cd79da..6d7a5903 100644 --- a/pjlib-util/src/pjlib-util/resolver.c +++ b/pjlib-util/src/pjlib-util/resolver.c @@ -638,6 +638,7 @@ static pj_status_t transmit_query(pj_dns_resolver *resolver, /* Send the packet to name servers */ for (i=0; ins[servers[i]]; @@ -651,7 +652,8 @@ static pj_status_t transmit_query(pj_dns_resolver *resolver, "%s %d bytes to NS %d (%s:%d): DNS %s query for %s", (q->transmit_cnt==0? "Transmitting":"Re-transmitting"), (int)pkt_size, servers[i], - pj_inet_ntoa(ns->addr.sin_addr), + pj_inet_ntop2(pj_AF_INET(), &ns->addr.sin_addr, addr, + sizeof(addr)), (int)pj_ntohs(ns->addr.sin_port), pj_dns_get_type_name(q->key.qtype), q->key.name)); @@ -1034,6 +1036,7 @@ static void set_nameserver_state(pj_dns_resolver *resolver, { struct nameserver *ns = &resolver->ns[index]; enum ns_state old_state = ns->state; + char addr[PJ_INET_ADDRSTRLEN]; ns->state = state; ns->state_expiry = *now; @@ -1047,7 +1050,8 @@ static void set_nameserver_state(pj_dns_resolver *resolver, ns->state_expiry.sec += resolver->settings.bad_ns_ttl; PJ_LOG(5, (resolver->name.ptr, "Nameserver %s:%d state changed %s --> %s", - pj_inet_ntoa(ns->addr.sin_addr), + pj_inet_ntop2(pj_AF_INET(), &ns->addr.sin_addr, addr, + sizeof(addr)), (int)pj_ntohs(ns->addr.sin_port), state_names[old_state], state_names[state])); } @@ -1390,6 +1394,7 @@ static void on_read_complete(pj_ioqueue_key_t *key, pj_pool_t *pool = NULL; pj_dns_parsed_packet *dns_pkt; pj_dns_async_query *q; + char addr[PJ_INET_ADDRSTRLEN]; pj_status_t status; PJ_USE_EXCEPTION; @@ -1406,7 +1411,8 @@ static void on_read_complete(pj_ioqueue_key_t *key, pj_strerror(status, errmsg, sizeof(errmsg)); PJ_LOG(4,(resolver->name.ptr, "DNS resolver read error from %s:%d: %s", - pj_inet_ntoa(resolver->udp_src_addr.sin_addr), + pj_inet_ntop2(pj_AF_INET(), &resolver->udp_src_addr.sin_addr, + addr, sizeof(addr)), pj_ntohs(resolver->udp_src_addr.sin_port), errmsg)); @@ -1416,7 +1422,8 @@ static void on_read_complete(pj_ioqueue_key_t *key, PJ_LOG(5,(resolver->name.ptr, "Received %d bytes DNS response from %s:%d", (int)bytes_read, - pj_inet_ntoa(resolver->udp_src_addr.sin_addr), + pj_inet_ntop2(pj_AF_INET(), &resolver->udp_src_addr.sin_addr, + addr, sizeof(addr)), pj_ntohs(resolver->udp_src_addr.sin_port))); @@ -1450,7 +1457,8 @@ static void on_read_complete(pj_ioqueue_key_t *key, pj_strerror(status, errmsg, sizeof(errmsg)); PJ_LOG(3,(resolver->name.ptr, "Error parsing DNS response from %s:%d: %s", - pj_inet_ntoa(resolver->udp_src_addr.sin_addr), + pj_inet_ntop2(pj_AF_INET(), &resolver->udp_src_addr.sin_addr, + addr, sizeof(addr)), pj_ntohs(resolver->udp_src_addr.sin_port), errmsg)); goto read_next_packet; @@ -1463,7 +1471,8 @@ static void on_read_complete(pj_ioqueue_key_t *key, if (!q) { PJ_LOG(5,(resolver->name.ptr, "DNS response from %s:%d id=%d discarded", - pj_inet_ntoa(resolver->udp_src_addr.sin_addr), + pj_inet_ntop2(pj_AF_INET(), &resolver->udp_src_addr.sin_addr, + addr, sizeof(addr)), pj_ntohs(resolver->udp_src_addr.sin_port), (unsigned)dns_pkt->hdr.id)); goto read_next_packet; @@ -1633,11 +1642,13 @@ PJ_DEF(void) pj_dns_resolver_dump(pj_dns_resolver *resolver, PJ_LOG(3,(resolver->name.ptr, " Name servers:")); for (i=0; ins_count; ++i) { + char addr[PJ_INET_ADDRSTRLEN]; struct nameserver *ns = &resolver->ns[i]; PJ_LOG(3,(resolver->name.ptr, " NS %d: %s:%d (state=%s until %ds, rtt=%d ms)", - i, pj_inet_ntoa(ns->addr.sin_addr), + i, pj_inet_ntop2(pj_AF_INET(), &ns->addr.sin_addr, addr, + sizeof(addr)), pj_ntohs(ns->addr.sin_port), state_names[ns->state], ns->state_expiry.sec - now.sec, diff --git a/pjlib-util/src/pjlib-util/srv_resolver.c b/pjlib-util/src/pjlib-util/srv_resolver.c index 5eed2ac7..6e325b43 100644 --- a/pjlib-util/src/pjlib-util/srv_resolver.c +++ b/pjlib-util/src/pjlib-util/srv_resolver.c @@ -368,7 +368,9 @@ static void build_server_entries(pj_dns_srv_async_query *query_job, continue; } - if (pj_inet_aton(&query_job->srv[i].target_name, &addr) != 0) { + if (pj_inet_pton(pj_AF_INET(), &query_job->srv[i].target_name, + &addr) == PJ_SUCCESS) + { query_job->srv[i].addr[query_job->srv[i].addr_cnt++] = addr; ++query_job->host_resolved; } @@ -385,12 +387,13 @@ static void build_server_entries(pj_dns_srv_async_query *query_job, (query_job->srv_cnt ? ':' : ' '))); for (i=0; isrv_cnt; ++i) { - const char *addr; + char addr[PJ_INET_ADDRSTRLEN]; - if (query_job->srv[i].addr_cnt != 0) - addr = pj_inet_ntoa(query_job->srv[i].addr[0]); - else - addr = "-"; + if (query_job->srv[i].addr_cnt != 0) { + pj_inet_ntop(pj_AF_INET(), &query_job->srv[i].addr[0], + addr, sizeof(addr)); + } else + pj_ansi_strcpy(addr, "-"); PJ_LOG(5,(query_job->objname, " %d: SRV %d %d %d %.*s (%s)", @@ -547,6 +550,7 @@ static void dns_callback(void *user_data, /* Check that we really have answer */ if (status==PJ_SUCCESS && pkt->hdr.anscount != 0) { + char addr[PJ_INET_ADDRSTRLEN]; pj_dns_a_record rec; /* Parse response */ @@ -573,7 +577,8 @@ static void dns_callback(void *user_data, "DNS A for %.*s: %s", (int)srv->target_name.slen, srv->target_name.ptr, - pj_inet_ntoa(rec.addr[0]))); + pj_inet_ntop2(pj_AF_INET(), &rec.addr[0], + addr, sizeof(addr)))); } /* Check for multiple IP addresses */ @@ -585,7 +590,8 @@ static void dns_callback(void *user_data, "Additional DNS A for %.*s: %s", (int)srv->target_name.slen, srv->target_name.ptr, - pj_inet_ntoa(rec.addr[i]))); + pj_inet_ntop2(pj_AF_INET(), &rec.addr[i], + addr, sizeof(addr)))); } } else if (status != PJ_SUCCESS) { diff --git a/pjlib-util/src/pjlib-util/stun_simple_client.c b/pjlib-util/src/pjlib-util/stun_simple_client.c index 9ba18dfd..7c247da7 100644 --- a/pjlib-util/src/pjlib-util/stun_simple_client.c +++ b/pjlib-util/src/pjlib-util/stun_simple_client.c @@ -33,7 +33,6 @@ static int stun_timer[] = {500, 500, 500, 500 }; #define STUN_MAGIC 0x2112A442 #define THIS_FILE "stun_client.c" -#define LOG_ADDR(addr) pj_inet_ntoa(addr.sin_addr), pj_ntohs(addr.sin_port) #define TRACE_(x) PJ_LOG(6,x) diff --git a/pjlib/src/pjlib-test/echo_clt.c b/pjlib/src/pjlib-test/echo_clt.c index 12c4e035..6fd5eb8e 100644 --- a/pjlib/src/pjlib-test/echo_clt.c +++ b/pjlib/src/pjlib-test/echo_clt.c @@ -57,6 +57,7 @@ static int echo_client_thread(void *arg) pj_sock_t sock; char send_buf[BUF_SIZE]; char recv_buf[BUF_SIZE]; + char addr[PJ_INET_ADDRSTRLEN]; pj_sockaddr_in addr; pj_str_t s; pj_status_t rc; @@ -87,7 +88,8 @@ static int echo_client_thread(void *arg) } PJ_LOG(3,("", "...socket connected to %s:%d", - pj_inet_ntoa(addr.sin_addr), + pj_inet_ntop2(pj_AF_INET(), &addr.sin_addr, + addr, sizeof(addr)), pj_ntohs(addr.sin_port))); pj_memset(send_buf, 'A', BUF_SIZE); diff --git a/pjmedia/src/pjmedia/endpoint.c b/pjmedia/src/pjmedia/endpoint.c index 82d7d568..f052b927 100644 --- a/pjmedia/src/pjmedia/endpoint.c +++ b/pjmedia/src/pjmedia/endpoint.c @@ -764,6 +764,7 @@ PJ_DEF(pj_status_t) pjmedia_endpt_create_base_sdp( pjmedia_endpt *endpt, const pj_sockaddr *origin, pjmedia_sdp_session **p_sdp) { + char tmp_addr[PJ_INET6_ADDRSTRLEN]; pj_time_val tv; pjmedia_sdp_session *sdp; @@ -779,20 +780,16 @@ PJ_DEF(pj_status_t) pjmedia_endpt_create_base_sdp( pjmedia_endpt *endpt, if (origin->addr.sa_family == pj_AF_INET()) { sdp->origin.addr_type = STR_IP4; - pj_strdup2(pool, &sdp->origin.addr, - pj_inet_ntoa(origin->ipv4.sin_addr)); } else if (origin->addr.sa_family == pj_AF_INET6()) { - char tmp_addr[PJ_INET6_ADDRSTRLEN]; - sdp->origin.addr_type = STR_IP6; - pj_strdup2(pool, &sdp->origin.addr, - pj_sockaddr_print(origin, tmp_addr, sizeof(tmp_addr), 0)); - } else { pj_assert(!"Invalid address family"); return PJ_EAFNOTSUP; } + pj_strdup2(pool, &sdp->origin.addr, + pj_sockaddr_print(origin, tmp_addr, sizeof(tmp_addr), 0)); + if (sess_name) pj_strdup(pool, &sdp->name, sess_name); else diff --git a/pjmedia/src/pjmedia/sdp.c b/pjmedia/src/pjmedia/sdp.c index 8bf7d805..a9afe19f 100644 --- a/pjmedia/src/pjmedia/sdp.c +++ b/pjmedia/src/pjmedia/sdp.c @@ -431,6 +431,7 @@ PJ_DEF(pjmedia_sdp_attr*) pjmedia_sdp_attr_create_rtcp(pj_pool_t *pool, enum { ATTR_LEN = PJ_INET6_ADDRSTRLEN+16 }; + char tmp_addr[PJ_INET6_ADDRSTRLEN]; pjmedia_sdp_attr *attr; attr = PJ_POOL_ALLOC_T(pool, pjmedia_sdp_attr); @@ -440,10 +441,10 @@ PJ_DEF(pjmedia_sdp_attr*) pjmedia_sdp_attr_create_rtcp(pj_pool_t *pool, attr->value.slen = pj_ansi_snprintf(attr->value.ptr, ATTR_LEN, "%u IN IP4 %s", - pj_ntohs(a->ipv4.sin_port), - pj_inet_ntoa(a->ipv4.sin_addr)); + pj_sockaddr_get_port(a), + pj_sockaddr_print(a, tmp_addr, + sizeof(tmp_addr), 0)); } else if (a->addr.sa_family == pj_AF_INET6()) { - char tmp_addr[PJ_INET6_ADDRSTRLEN]; attr->value.slen = pj_ansi_snprintf(attr->value.ptr, ATTR_LEN, "%u IN IP6 %s", diff --git a/pjnath/src/pjnath/nat_detect.c b/pjnath/src/pjnath/nat_detect.c index a4fa588e..09be94a7 100644 --- a/pjnath/src/pjnath/nat_detect.c +++ b/pjnath/src/pjnath/nat_detect.c @@ -214,6 +214,7 @@ PJ_DEF(pj_status_t) pj_stun_detect_nat_type(const pj_sockaddr_in *server, pj_stun_session_cb sess_cb; pj_ioqueue_callback ioqueue_cb; int addr_len; + char addr[PJ_INET_ADDRSTRLEN]; pj_status_t status; PJ_ASSERT_RETURN(server && stun_cfg, PJ_EINVAL); @@ -286,11 +287,13 @@ PJ_DEF(pj_status_t) pj_stun_detect_nat_type(const pj_sockaddr_in *server, goto on_error; PJ_LOG(5,(sess->pool->obj_name, "Local address is %s:%d", - pj_inet_ntoa(sess->local_addr.sin_addr), + pj_inet_ntop2(pj_AF_INET(), &sess->local_addr.sin_addr, + addr, sizeof(addr)), pj_ntohs(sess->local_addr.sin_port))); PJ_LOG(5,(sess->pool->obj_name, "Server set to %s:%d", - pj_inet_ntoa(server->sin_addr), + pj_inet_ntop2(pj_AF_INET(), &server->sin_addr, addr, + sizeof(addr)), pj_ntohs(server->sin_port))); /* @@ -814,6 +817,7 @@ static pj_status_t send_test(nat_detect_session *sess, pj_uint32_t change_flag) { pj_uint32_t magic, tsx_id[3]; + char addr[PJ_INET_ADDRSTRLEN]; pj_status_t status; sess->result[test_id].executed = PJ_TRUE; @@ -852,7 +856,8 @@ static pj_status_t send_test(nat_detect_session *sess, PJ_LOG(5,(sess->pool->obj_name, "Performing %s to %s:%d", test_names[test_id], - pj_inet_ntoa(sess->cur_server->sin_addr), + pj_inet_ntop2(pj_AF_INET(), &sess->cur_server->sin_addr, + addr, sizeof(addr)), pj_ntohs(sess->cur_server->sin_port))); /* Send the request */ diff --git a/pjnath/src/pjnath/stun_msg_dump.c b/pjnath/src/pjnath/stun_msg_dump.c index 6428d97e..29f37c54 100644 --- a/pjnath/src/pjnath/stun_msg_dump.c +++ b/pjnath/src/pjnath/stun_msg_dump.c @@ -86,6 +86,7 @@ static int print_attr(char *buffer, unsigned length, case PJ_STUN_ATTR_XOR_REFLECTED_FROM: case PJ_STUN_ATTR_ALTERNATE_SERVER: { + char addr[PJ_INET6_ADDRSTRLEN]; const pj_stun_sockaddr_attr *attr; attr = (const pj_stun_sockaddr_attr*)ahdr; @@ -93,8 +94,9 @@ static int print_attr(char *buffer, unsigned length, if (attr->sockaddr.addr.sa_family == pj_AF_INET()) { len = pj_ansi_snprintf(p, end-p, ", IPv4 addr=%s:%d\n", - pj_inet_ntoa(attr->sockaddr.ipv4.sin_addr), - pj_ntohs(attr->sockaddr.ipv4.sin_port)); + pj_sockaddr_print(&attr->sockaddr, + addr, sizeof(addr),0), + pj_sockaddr_get_port(&attr->sockaddr)); } else if (attr->sockaddr.addr.sa_family == pj_AF_INET6()) { len = pj_ansi_snprintf(p, end-p, diff --git a/pjsip-apps/src/samples/proxy.h b/pjsip-apps/src/samples/proxy.h index 93be0a8e..cf963175 100644 --- a/pjsip-apps/src/samples/proxy.h +++ b/pjsip-apps/src/samples/proxy.h @@ -252,21 +252,27 @@ static pj_status_t init_proxy(void) * to be added in Record-Route. */ if (pj_gethostip(pj_AF_INET(), &pri_addr)==PJ_SUCCESS) { - pj_strdup2(global.pool, &global.name[global.name_cnt].host, - pj_inet_ntoa(pri_addr.ipv4.sin_addr)); + char addr[PJ_INET_ADDRSTRLEN]; + pj_inet_ntop(pj_AF_INET(), &pri_addr.ipv4.sin_addr, addr, + sizeof(addr)); + pj_strdup2(global.pool, &global.name[global.name_cnt].host, addr); global.name[global.name_cnt].port = global.port; global.name_cnt++; } /* Get the rest of IP interfaces */ - if (pj_enum_ip_interface(pj_AF_INET(), &addr_cnt, addr_list) == PJ_SUCCESS) { + if (pj_enum_ip_interface(pj_AF_INET(), &addr_cnt, addr_list) == PJ_SUCCESS) + { for (i=0; i 0) + /* First check if this is an IPv4 address */ + if (pj_inet_pton(pj_AF_INET(), host, &dummy) == PJ_SUCCESS) return 4; /* Then check if this is an IPv6 address */ @@ -260,7 +260,7 @@ PJ_DEF(void) pjsip_resolve( pjsip_resolver_t *resolver, if (ip_addr_ver == 4) { pj_sockaddr_init(pj_AF_INET(), &svr_addr.entry[0].addr, NULL, 0); - pj_inet_aton(&target->addr.host, + pj_inet_pton(pj_AF_INET(), &target->addr.host, &svr_addr.entry[0].addr.ipv4.sin_addr); } else { pj_sockaddr_init(pj_AF_INET6(), &svr_addr.entry[0].addr, diff --git a/pjsip/src/pjsip/sip_transport_udp.c b/pjsip/src/pjsip/sip_transport_udp.c index 499cbeac..9e6d3ee5 100644 --- a/pjsip/src/pjsip/sip_transport_udp.c +++ b/pjsip/src/pjsip/sip_transport_udp.c @@ -160,17 +160,9 @@ static void udp_on_read_complete( pj_ioqueue_key_t *key, rdata->pkt_info.len = bytes_read; rdata->pkt_info.zero = 0; pj_gettimeofday(&rdata->pkt_info.timestamp); - if (src_addr->addr.sa_family == pj_AF_INET()) { - pj_ansi_strcpy(rdata->pkt_info.src_name, - pj_inet_ntoa(src_addr->ipv4.sin_addr)); - rdata->pkt_info.src_port = pj_ntohs(src_addr->ipv4.sin_port); - } else { - pj_inet_ntop(pj_AF_INET6(), - pj_sockaddr_get_addr(&rdata->pkt_info.src_addr), - rdata->pkt_info.src_name, - sizeof(rdata->pkt_info.src_name)); - rdata->pkt_info.src_port = pj_ntohs(src_addr->ipv6.sin6_port); - } + pj_sockaddr_print(src_addr, rdata->pkt_info.src_name, + sizeof(rdata->pkt_info.src_name), 0); + rdata->pkt_info.src_port = pj_sockaddr_get_port(src_addr); size_eaten = pjsip_tpmgr_receive_packet(rdata->tp_info.transport->tpmgr, @@ -517,12 +509,12 @@ static pj_status_t get_published_name(pj_sock_t sock, if (status != PJ_SUCCESS) return status; - pj_strcpy2(&bound_name->host, pj_inet_ntoa(hostip.ipv4.sin_addr)); + status = pj_inet_ntop(pj_AF_INET(), &hostip.ipv4.sin_addr, + hostbuf, hostbufsz); } else { /* Otherwise use bound address. */ - pj_strcpy2(&bound_name->host, - pj_inet_ntoa(tmp_addr.ipv4.sin_addr)); - status = PJ_SUCCESS; + status = pj_inet_ntop(pj_AF_INET(), &tmp_addr.ipv4.sin_addr, + hostbuf, hostbufsz); } } else { @@ -542,9 +534,9 @@ static pj_status_t get_published_name(pj_sock_t sock, status = pj_inet_ntop(tmp_addr.addr.sa_family, pj_sockaddr_get_addr(&tmp_addr), hostbuf, hostbufsz); - if (status == PJ_SUCCESS) { - bound_name->host.slen = pj_ansi_strlen(hostbuf); - } + } + if (status == PJ_SUCCESS) { + bound_name->host.slen = pj_ansi_strlen(hostbuf); } diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c index 15746cef..055d7ad7 100644 --- a/pjsip/src/pjsua-lib/pjsua_acc.c +++ b/pjsip/src/pjsua-lib/pjsua_acc.c @@ -3031,8 +3031,8 @@ static int get_ip_addr_ver(const pj_str_t *host) pj_in_addr dummy; pj_in6_addr dummy6; - /* First check with inet_aton() */ - if (pj_inet_aton(host, &dummy) > 0) + /* First check if this is an IPv4 address */ + if (pj_inet_pton(pj_AF_INET(), host, &dummy) == PJ_SUCCESS) return 4; /* Then check if this is an IPv6 address */ diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c index 3c705540..d86013c7 100644 --- a/pjsip/src/pjsua-lib/pjsua_core.c +++ b/pjsip/src/pjsua-lib/pjsua_core.c @@ -2056,7 +2056,8 @@ static pj_status_t create_sip_udp_sock(int af, } if (pjsua_var.stun_srv.addr.sa_family != 0) { - pj_ansi_strcpy(stun_ip_addr,pj_inet_ntoa(pjsua_var.stun_srv.ipv4.sin_addr)); + pj_sockaddr_print(&pjsua_var.stun_srv, + stun_ip_addr, sizeof(stun_ip_addr), 0); stun_srv = pj_str(stun_ip_addr); } else { stun_srv.slen = 0; diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c index 524915c7..bb8dc49b 100644 --- a/pjsip/src/pjsua-lib/pjsua_media.c +++ b/pjsip/src/pjsua-lib/pjsua_media.c @@ -359,8 +359,7 @@ static pj_status_t create_rtp_rtcp_sock(pjsua_call_media *call_med, pj_sockaddr_in resolved_addr[2]; pjstun_setting stun_opt; - pj_ansi_strcpy(ip_addr, - pj_inet_ntoa(pjsua_var.stun_srv.ipv4.sin_addr)); + pj_sockaddr_print(&pjsua_var.stun_srv, ip_addr,sizeof(ip_addr),0); stun_srv = pj_str(ip_addr); pj_bzero(&stun_opt, sizeof(stun_opt)); @@ -426,8 +425,8 @@ static pj_status_t create_rtp_rtcp_sock(pjsua_call_media *call_med, if (status == PJ_SUCCESS) { if (pjsua_var.stun_srv.addr.sa_family != 0) { - pj_ansi_strcpy(ip_addr, - pj_inet_ntoa(pjsua_var.stun_srv.ipv4.sin_addr)); + pj_sockaddr_print(&pjsua_var.stun_srv, + ip_addr, sizeof(ip_addr), 0); stun_srv = pj_str(ip_addr); } else { stun_srv.slen = 0; diff --git a/pjsip/src/test/transport_tcp_test.c b/pjsip/src/test/transport_tcp_test.c index 9024ef99..3ff5f8ff 100644 --- a/pjsip/src/test/transport_tcp_test.c +++ b/pjsip/src/test/transport_tcp_test.c @@ -37,6 +37,7 @@ int transport_tcp_test(void) pj_sockaddr_in rem_addr; pj_status_t status; char url[PJSIP_MAX_URL_SIZE]; + char addr[PJ_INET_ADDRSTRLEN]; int rtt[SEND_RECV_LOOP], min_rtt; int i, pkt_lost; @@ -57,7 +58,8 @@ int transport_tcp_test(void) } pj_ansi_sprintf(url, "sip:alice@%s:%d;transport=tcp", - pj_inet_ntoa(rem_addr.sin_addr), + pj_inet_ntop2(pj_AF_INET(), &rem_addr.sin_addr, addr, + sizeof(addr)), pj_ntohs(rem_addr.sin_port)); diff --git a/pjsip/src/test/transport_test.c b/pjsip/src/test/transport_test.c index ab22c5ef..e5083d1a 100644 --- a/pjsip/src/test/transport_test.c +++ b/pjsip/src/test/transport_test.c @@ -37,8 +37,9 @@ int generic_transport_test(pjsip_transport *tp) { struct pj_in_addr addr; - /* Note: inet_aton() returns non-zero if addr is valid! */ - if (pj_inet_aton(&tp->local_name.host, &addr) != 0) { + if (pj_inet_pton(pj_AF_INET(), &tp->local_name.host, + &addr) == PJ_SUCCESS) + { if (addr.s_addr==PJ_INADDR_ANY || addr.s_addr==PJ_INADDR_NONE) { PJ_LOG(3,(THIS_FILE, " Error: invalid address name")); return -420; -- cgit v1.2.3