Changeset 1601 for pjproject/trunk/pjlib/src/pj/sock_symbian.cpp
- Timestamp:
- Dec 1, 2007 8:52:57 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjlib/src/pj/sock_symbian.cpp
r1588 r1601 443 443 444 444 /* 445 * Convert address string with numbers and dots to binary IP address.446 */447 PJ_DEF(pj_in_addr) pj_inet_addr(const pj_str_t *cp)448 {449 pj_in_addr addr;450 451 pj_inet_aton(cp, &addr);452 return addr;453 }454 455 /*456 * Convert address string with numbers and dots to binary IP address.457 */458 PJ_DEF(pj_in_addr) pj_inet_addr2(const char *cp)459 {460 pj_str_t str = pj_str((char*)cp);461 return pj_inet_addr(&str);462 }463 464 /*465 * Set the IP address of an IP socket address from string address,466 * with resolving the host if necessary. The string address may be in a467 * standard numbers and dots notation or may be a hostname. If hostname468 * is specified, then the function will resolve the host into the IP469 * address.470 */471 PJ_DEF(pj_status_t) pj_sockaddr_in_set_str_addr( pj_sockaddr_in *addr,472 const pj_str_t *str_addr)473 {474 PJ_CHECK_STACK();475 476 PJ_ASSERT_RETURN(!str_addr || str_addr->slen < PJ_MAX_HOSTNAME,477 (addr->sin_addr.s_addr=PJ_INADDR_NONE, PJ_EINVAL));478 479 addr->sin_family = PJ_AF_INET;480 pj_memset(addr->sin_zero, 0, sizeof(addr->sin_zero));481 482 if (str_addr && str_addr->slen) {483 addr->sin_addr = pj_inet_addr(str_addr);484 if (addr->sin_addr.s_addr == PJ_INADDR_NONE) {485 pj_hostent he;486 pj_status_t rc;487 488 rc = pj_gethostbyname(str_addr, &he);489 if (rc == 0) {490 addr->sin_addr.s_addr = *(pj_uint32_t*)he.h_addr;491 } else {492 addr->sin_addr.s_addr = PJ_INADDR_NONE;493 return rc;494 }495 }496 497 } else {498 addr->sin_addr.s_addr = 0;499 }500 501 return PJ_SUCCESS;502 }503 504 /*505 * Set the IP address and port of an IP socket address.506 * The string address may be in a standard numbers and dots notation or507 * may be a hostname. If hostname is specified, then the function will508 * resolve the host into the IP address.509 */510 PJ_DEF(pj_status_t) pj_sockaddr_in_init( pj_sockaddr_in *addr,511 const pj_str_t *str_addr,512 pj_uint16_t port)513 {514 PJ_ASSERT_RETURN(addr, (addr->sin_addr.s_addr=PJ_INADDR_NONE, PJ_EINVAL));515 516 addr->sin_family = PJ_AF_INET;517 pj_memset(addr->sin_zero, 0, sizeof(addr->sin_zero));518 pj_sockaddr_in_set_port(addr, port);519 return pj_sockaddr_in_set_str_addr(addr, str_addr);520 }521 522 523 /*524 445 * Get hostname. 525 446 */ … … 532 453 533 454 if (hostname.ptr == NULL) { 534 RHostResolver & resv = PjSymbianOS::Instance()->GetResolver();455 RHostResolver &resv = PjSymbianOS::Instance()->GetResolver(PJ_AF_INET); 535 456 TRequestStatus reqStatus; 536 457 THostName tmpName; … … 545 466 return &hostname; 546 467 } 547 548 /*549 * Get first IP address associated with the hostname.550 */551 PJ_DEF(pj_in_addr) pj_gethostaddr(void)552 {553 pj_sockaddr_in addr;554 const pj_str_t *hostname = pj_gethostname();555 556 pj_sockaddr_in_set_str_addr(&addr, hostname);557 return addr.sin_addr;558 }559 560 468 561 469 /* … … 597 505 598 506 /* Wrap Symbian RSocket into PJLIB's CPjSocket, and return to caller */ 599 CPjSocket *pjSock = new CPjSocket( rSock);507 CPjSocket *pjSock = new CPjSocket(af, rSock); 600 508 *p_sock = (pj_sock_t)pjSock; 601 509 … … 611 519 int len) 612 520 { 521 pj_status_t status; 613 522 TInt rc; 614 523 … … 616 525 617 526 PJ_ASSERT_RETURN(sock != 0, PJ_EINVAL); 618 PJ_ASSERT_RETURN(addr && len == sizeof(pj_sockaddr_in), PJ_EINVAL);619 620 // Convert PJLIB's pj_sockaddr _ininto Symbian's TInetAddr527 PJ_ASSERT_RETURN(addr && len >= sizeof(pj_sockaddr_in), PJ_EINVAL); 528 529 // Convert PJLIB's pj_sockaddr into Symbian's TInetAddr 621 530 TInetAddr inetAddr; 622 PjSymbianOS::pj2Addr(*(pj_sockaddr_in*)addr, inetAddr); 531 status = PjSymbianOS::pj2Addr(*(pj_sockaddr*)addr, len, inetAddr); 532 if (status != PJ_SUCCESS) 533 return status; 623 534 624 535 // Get the RSocket instance … … 690 601 rSock.RemoteName(inetAddr); 691 602 692 PjSymbianOS::Addr2pj(inetAddr, *(pj_sockaddr_in*)addr); 693 *namelen = sizeof(pj_sockaddr_in); 694 695 return PJ_SUCCESS; 603 return PjSymbianOS::Addr2pj(inetAddr, *(pj_sockaddr*)addr, namelen); 696 604 } 697 605 … … 714 622 rSock.LocalName(inetAddr); 715 623 716 PjSymbianOS::Addr2pj(inetAddr, *(pj_sockaddr_in*)addr); 717 *namelen = sizeof(pj_sockaddr_in); 718 719 return PJ_SUCCESS; 624 return PjSymbianOS::Addr2pj(inetAddr, *(pj_sockaddr*)addr, namelen); 720 625 } 721 626 … … 762 667 int tolen) 763 668 { 669 pj_status_t status; 670 764 671 PJ_CHECK_STACK(); 765 672 PJ_ASSERT_RETURN(sock && buf && len, PJ_EINVAL); … … 769 676 770 677 // Only supports AF_INET for now 771 PJ_ASSERT_RETURN(tolen==sizeof(pj_sockaddr_in) && 772 ((pj_sockaddr*)to)->addr.sa_family == PJ_AF_INET, 773 PJ_EINVAL); 678 PJ_ASSERT_RETURN(tolen >= sizeof(pj_sockaddr_in), PJ_EINVAL); 774 679 775 680 TInetAddr inetAddr; 776 PjSymbianOS::pj2Addr(*(pj_sockaddr_in*)to, inetAddr); 681 status = PjSymbianOS::pj2Addr(*(pj_sockaddr*)to, tolen, inetAddr); 682 if (status != PJ_SUCCESS) 683 return status; 777 684 778 685 TPtrC8 data((const TUint8*)buf, (TInt)*len); … … 877 784 878 785 if (from && fromlen) { 879 PjSymbianOS::Addr2pj(inetAddr, *(pj_sockaddr_in*)from); 880 *fromlen = sizeof(pj_sockaddr_in); 786 return PjSymbianOS::Addr2pj(inetAddr, *(pj_sockaddr*)from, 787 fromlen); 788 } else { 789 return PJ_SUCCESS; 881 790 } 882 return PJ_SUCCESS;883 791 } 884 792 } … … 895 803 //*len = (TInt)recvLen.Length(); 896 804 *len = data.Length(); 897 *fromlen = sizeof(pj_sockaddr_in); 898 PjSymbianOS::Addr2pj(inetAddr, *(pj_sockaddr_in*)from); 899 return PJ_SUCCESS; 805 return PjSymbianOS::Addr2pj(inetAddr, *(pj_sockaddr*)from, fromlen); 900 806 } else { 901 807 *len = -1; … … 948 854 int namelen) 949 855 { 856 pj_status_t status; 857 950 858 PJ_CHECK_STACK(); 951 859 … … 960 868 TRequestStatus reqStatus; 961 869 962 PjSymbianOS::pj2Addr(*(pj_sockaddr_in*)addr, inetAddr); 870 status = PjSymbianOS::pj2Addr(*(pj_sockaddr*)addr, namelen, inetAddr); 871 if (status != PJ_SUCCESS) 872 return status; 963 873 964 874 rSock.Connect(inetAddr, reqStatus); … … 1060 970 1061 971 // Create PJ socket 1062 CPjSocket *newPjSock = new CPjSocket( newSock);972 CPjSocket *newPjSock = new CPjSocket(pjSock->GetAf(), newSock); 1063 973 newPjSock->SetConnected(true); 1064 974
Note: See TracChangeset
for help on using the changeset viewer.