Changeset 1608 for pjproject


Ignore:
Timestamp:
Dec 2, 2007 3:36:46 PM (17 years ago)
Author:
bennylp
Message:

More ticket #415: Added pj_sockaddr_get_len() and pj_inet_ntop2(), and fixed Symbian combilation warnings with gcce

Location:
pjproject/trunk/pjlib
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjlib/include/pj/compat/socket.h

    r1601 r1608  
    6969 
    7070#   undef s_addr 
     71#   define PJ_SOCK_HAS_GETADDRINFO  1 
    7172#endif  /* _MSC_VER */ 
    7273 
  • pjproject/trunk/pjlib/include/pj/sock.h

    r1601 r1608  
    609609 *              for IPv4, PJ_INET6_ADDRSTRLEN characters for IPv6). 
    610610 * 
    611  * @return      PJ_SUCCESS if conversion was successful.. 
     611 * @return      PJ_SUCCESS if conversion was successful. 
    612612 */ 
    613613PJ_DECL(pj_status_t) pj_inet_ntop(int af, const void *src, 
    614614                                  char *dst, int size); 
     615 
     616/** 
     617 * Converts numeric address into its text string representation. 
     618 * 
     619 * @param af    Specify the family of the address. This can be PJ_AF_INET 
     620 *              or PJ_AF_INET6. 
     621 * @param src   Points to a buffer holding an IPv4 address if the af argument 
     622 *              is PJ_AF_INET, or an IPv6 address if the af argument is 
     623 *              PJ_AF_INET6; the address must be in network byte order.   
     624 * @param dst   Points to a buffer where the function stores the resulting 
     625 *              text string; it shall not be NULL.   
     626 * @param size  Specifies the size of this buffer, which shall be large  
     627 *              enough to hold the text string (PJ_INET_ADDRSTRLEN characters 
     628 *              for IPv4, PJ_INET6_ADDRSTRLEN characters for IPv6). 
     629 * 
     630 * @return      The address string or NULL if failed. 
     631 */ 
     632PJ_DECL(char*) pj_inet_ntop2(int af, const void *src, 
     633                             char *dst, int size); 
     634 
    615635 
    616636/** 
     
    708728 * @param addr      Socket address. 
    709729 * 
    710  * @return          Port number, in host byte order. 
     730 * @return          Length in bytes. 
    711731 */ 
    712732PJ_DECL(unsigned) pj_sockaddr_get_addr_len(const pj_sockaddr_t *addr); 
     733 
     734/** 
     735 * Get the socket address length, based on its address 
     736 * family. For PJ_AF_INET, the length will be sizeof(pj_sockaddr_in), and 
     737 * for PJ_AF_INET6, the length will be sizeof(pj_sockaddr_in6). 
     738 *  
     739 * @param addr      Socket address. 
     740 * 
     741 * @return          Length in bytes. 
     742 */ 
     743PJ_DECL(unsigned) pj_sockaddr_get_len(const pj_sockaddr_t *addr); 
    713744 
    714745/** 
  • pjproject/trunk/pjlib/src/pj/addr_resolv_sock.c

    r1601 r1608  
    6262#if defined(PJ_SOCK_HAS_GETADDRINFO) && PJ_SOCK_HAS_GETADDRINFO!=0 
    6363    char nodecopy[PJ_MAX_HOSTNAME]; 
    64     struct addrinfo hint, *res; 
     64    struct addrinfo hint, *res, *orig_res; 
    6565    unsigned i; 
    6666    int rc; 
     
    8585        return PJ_ERESOLVE; 
    8686 
     87    orig_res = res; 
     88 
    8789    /* Enumerate each item in the result */ 
    8890    for (i=0; i<*count && res; res=res->ai_next) { 
    89         int len; 
    90  
    9191        /* Ignore unwanted address families */ 
    9292        if (af!=PJ_AF_UNSPEC && res->ai_family != af) 
     
    9494 
    9595        /* Store canonical name (possibly truncating the name) */ 
    96         pj_ansi_strncpy(ai[i].ai_canonname, res->ai_canonname, 
    97                         sizeof(ai[i].ai_canonname)); 
    98         ai[i].ai_canonname[sizeof(ai[i].ai_canonname)-1] = '\0'; 
     96        if (res->ai_canonname) { 
     97            pj_ansi_strncpy(ai[i].ai_canonname, res->ai_canonname, 
     98                            sizeof(ai[i].ai_canonname)); 
     99            ai[i].ai_canonname[sizeof(ai[i].ai_canonname)-1] = '\0'; 
     100        } else { 
     101            pj_ansi_strcpy(ai[i].ai_canonname, nodecopy); 
     102        } 
    99103 
    100104        /* Store address */ 
     
    107111 
    108112    *count = i; 
     113 
     114    freeaddrinfo(orig_res); 
    109115 
    110116    /* Done */ 
  • pjproject/trunk/pjlib/src/pj/addr_resolv_symbian.cpp

    r1601 r1608  
    9292 
    9393        // Ignore if this is not the same address family 
    94         if (inetAddr.Family() != af) { 
     94        if (inetAddr.Family() != (unsigned)af) { 
    9595            resv.Next(nameEntry, reqStatus); 
    9696            User::WaitForRequest(reqStatus); 
  • pjproject/trunk/pjlib/src/pj/ioqueue_symbian.cpp

    r1601 r1608  
    702702        PJ_ASSERT_RETURN(addr && addrlen && *addrlen, PJ_EINVAL); 
    703703        if (sock->GetAf() == PJ_AF_INET) { 
    704             PJ_ASSERT_RETURN(*addrlen >= sizeof(pj_sockaddr_in), PJ_EINVAL); 
     704            PJ_ASSERT_RETURN(*addrlen>=(int)sizeof(pj_sockaddr_in), PJ_EINVAL); 
    705705        } else if (sock->GetAf() == PJ_AF_INET6) { 
    706             PJ_ASSERT_RETURN(*addrlen >= sizeof(pj_sockaddr_in6), PJ_EINVAL); 
     706            PJ_ASSERT_RETURN(*addrlen>=(int)sizeof(pj_sockaddr_in6), PJ_EINVAL); 
    707707        } 
    708708    } 
  • pjproject/trunk/pjlib/src/pj/ip_helper_symbian.cpp

    r1601 r1608  
    6060        int namelen; 
    6161         
    62         if (iAddress.Family() != af) { 
     62        if (iAddress.Family() != (unsigned)af) { 
    6363            continue; 
    6464        } 
     
    7777     
    7878    return PJ_SUCCESS; 
    79      
    80 on_error: 
    81     rSock.Close(); 
    82     *p_cnt = 0; 
    83     return PJ_RETURN_OS_ERROR(rc); 
    8479} 
    8580                                         
  • pjproject/trunk/pjlib/src/pj/os_symbian.h

    r1601 r1608  
    245245        pj_addr.addr.sa_family = (pj_uint16_t)sym_addr.Family(); 
    246246        if (pj_addr.addr.sa_family == PJ_AF_INET) { 
    247             PJ_ASSERT_RETURN(*addr_len >= sizeof(pj_sockaddr_in), PJ_ETOOSMALL); 
     247            PJ_ASSERT_RETURN(*addr_len>=(int)sizeof(pj_sockaddr_in), PJ_ETOOSMALL); 
    248248            pj_addr.ipv4.sin_addr.s_addr = pj_htonl(sym_addr.Address()); 
    249249            pj_addr.ipv4.sin_port = pj_htons((pj_uint16_t) sym_addr.Port()); 
    250250            *addr_len = sizeof(pj_sockaddr_in); 
    251251        } else if (pj_addr.addr.sa_family == PJ_AF_INET6) { 
    252             PJ_ASSERT_RETURN(*addr_len >= sizeof(pj_sockaddr_in6), PJ_ETOOSMALL); 
     252            PJ_ASSERT_RETURN(*addr_len>=(int)sizeof(pj_sockaddr_in6), PJ_ETOOSMALL); 
    253253            const TIp6Addr & ip6 = sym_addr.Ip6Address(); 
    254254            pj_memcpy(&pj_addr.ipv6.sin6_addr, ip6.u.iAddr8, 16); 
     
    272272    { 
    273273        if (pj_addr.addr.sa_family == PJ_AF_INET) { 
    274             PJ_ASSERT_RETURN(addrlen >= sizeof(pj_sockaddr_in), PJ_EINVAL); 
     274            PJ_ASSERT_RETURN(addrlen >= (int)sizeof(pj_sockaddr_in), PJ_EINVAL); 
    275275            sym_addr.Init(KAfInet); 
    276276            sym_addr.SetAddress((TUint32)pj_ntohl(pj_addr.ipv4.sin_addr.s_addr)); 
     
    279279            TIp6Addr ip6; 
    280280         
    281             PJ_ASSERT_RETURN(addrlen >= sizeof(pj_sockaddr_in6), PJ_EINVAL); 
     281            PJ_ASSERT_RETURN(addrlen>=(int)sizeof(pj_sockaddr_in6), PJ_EINVAL); 
    282282            pj_memcpy(ip6.u.iAddr8, &pj_addr.ipv6.sin6_addr, 16); 
    283283            sym_addr.Init(KAfInet6); 
  • pjproject/trunk/pjlib/src/pj/sock_common.c

    r1601 r1608  
    4848 
    4949/* 
     50 * Get text representation. 
     51 */ 
     52PJ_DEF(char*) pj_inet_ntop2( int af, const void *src, 
     53                             char *dst, int size) 
     54{ 
     55    pj_status_t status; 
     56 
     57    status = pj_inet_ntop(af, src, dst, size); 
     58    return (status==PJ_SUCCESS)? dst : NULL; 
     59} 
     60 
     61/* 
    5062 * Set the IP address of an IP socket address from string address,  
    5163 * with resolving the host if necessary. The string address may be in a 
     
    254266 
    255267/* 
     268 * Get socket address length. 
     269 */ 
     270PJ_DEF(unsigned) pj_sockaddr_get_len(const pj_sockaddr_t *addr) 
     271{ 
     272    const pj_sockaddr *a = (const pj_sockaddr*) addr; 
     273    PJ_ASSERT_RETURN(a->addr.sa_family == PJ_AF_INET || 
     274                     a->addr.sa_family == PJ_AF_INET6, PJ_EAFNOTSUP); 
     275    return a->addr.sa_family == PJ_AF_INET6 ? 
     276            sizeof(pj_sockaddr_in6) : sizeof(pj_sockaddr_in); 
     277} 
     278 
     279/* 
    256280 * Set port number of pj_sockaddr_in 
    257281 */ 
     
    270294    int af = addr->addr.sa_family; 
    271295 
    272     PJ_ASSERT_ON_FAIL(af == PJ_AF_INET || af == PJ_AF_INET6,  
    273                       PJ_EINVAL); 
     296    PJ_ASSERT_RETURN(af==PJ_AF_INET || af==PJ_AF_INET6, PJ_EINVAL); 
    274297 
    275298    if (af == PJ_AF_INET6) 
  • pjproject/trunk/pjlib/src/pj/sock_symbian.cpp

    r1601 r1608  
    525525 
    526526    PJ_ASSERT_RETURN(sock != 0, PJ_EINVAL); 
    527     PJ_ASSERT_RETURN(addr && len >= sizeof(pj_sockaddr_in), PJ_EINVAL); 
     527    PJ_ASSERT_RETURN(addr && len>=(int)sizeof(pj_sockaddr_in), PJ_EINVAL); 
    528528 
    529529    // Convert PJLIB's pj_sockaddr into Symbian's TInetAddr 
     
    676676 
    677677    // Only supports AF_INET for now 
    678     PJ_ASSERT_RETURN(tolen >= sizeof(pj_sockaddr_in), PJ_EINVAL); 
     678    PJ_ASSERT_RETURN(tolen>=(int)sizeof(pj_sockaddr_in), PJ_EINVAL); 
    679679 
    680680    TInetAddr inetAddr; 
Note: See TracChangeset for help on using the changeset viewer.