Changeset 563 for pjproject/trunk/pjsip/src/pjsua-lib/pjsua_core.c
- Timestamp:
- Jun 28, 2006 4:46:49 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjsip/src/pjsua-lib/pjsua_core.c
r509 r563 730 730 /* Find empty transport slot */ 731 731 for (id=0; id < PJ_ARRAY_SIZE(pjsua_var.tpdata); ++id) { 732 if (pjsua_var.tpdata[id]. tp== NULL)732 if (pjsua_var.tpdata[id].data.ptr == NULL) 733 733 break; 734 734 } … … 742 742 /* Create the transport */ 743 743 if (type == PJSIP_TRANSPORT_UDP) { 744 744 /* 745 * Create UDP transport. 746 */ 745 747 pjsua_transport_config config; 746 748 pj_sock_t sock = PJ_INVALID_SOCKET; … … 774 776 } 775 777 778 779 /* Save the transport */ 780 pjsua_var.tpdata[id].type = type; 781 pjsua_var.tpdata[id].local_name = tp->local_name; 782 pjsua_var.tpdata[id].data.tp = tp; 783 784 } else if (type == PJSIP_TRANSPORT_TCP) { 785 /* 786 * Create TCP transport. 787 */ 788 pjsua_transport_config config; 789 pjsip_tpfactory *tcp; 790 pj_sockaddr_in local_addr; 791 792 /* Supply default config if it's not specified */ 793 if (cfg == NULL) { 794 pjsua_transport_config_default(&config); 795 cfg = &config; 796 } 797 798 /* Init local address */ 799 pj_sockaddr_in_init(&local_addr, 0, 0); 800 801 if (cfg->port) 802 local_addr.sin_port = pj_htons((pj_uint16_t)cfg->port); 803 804 if (cfg->ip_addr.s_addr) 805 local_addr.sin_addr.s_addr = cfg->ip_addr.s_addr; 806 807 /* Create the TCP transport */ 808 status = pjsip_tcp_transport_start(pjsua_var.endpt, &local_addr, 1, 809 &tcp); 810 811 if (status != PJ_SUCCESS) { 812 pjsua_perror(THIS_FILE, "Error creating SIP TCP listener", 813 status); 814 goto on_return; 815 } 816 817 /* Save the transport */ 818 pjsua_var.tpdata[id].type = type; 819 pjsua_var.tpdata[id].local_name = tcp->addr_name; 820 pjsua_var.tpdata[id].data.factory = tcp; 821 776 822 } else { 777 823 status = PJSIP_EUNSUPTRANSPORT; … … 780 826 } 781 827 782 /* Save the transport */783 pjsua_var.tpdata[id].tp = tp;784 828 785 829 /* Return the ID */ … … 808 852 /* Find empty transport slot */ 809 853 for (id=0; id < PJ_ARRAY_SIZE(pjsua_var.tpdata); ++id) { 810 if (pjsua_var.tpdata[id]. tp== NULL)854 if (pjsua_var.tpdata[id].data.ptr == NULL) 811 855 break; 812 856 } … … 819 863 820 864 /* Save the transport */ 821 pjsua_var.tpdata[id].tp = tp; 865 pjsua_var.tpdata[id].type = tp->key.type; 866 pjsua_var.tpdata[id].local_name = tp->local_name; 867 pjsua_var.tpdata[id].data.tp = tp; 822 868 823 869 /* Return the ID */ … … 843 889 ++i) 844 890 { 845 if (!pjsua_var.tpdata[i]. tp)891 if (!pjsua_var.tpdata[i].data.ptr) 846 892 continue; 847 893 … … 863 909 pjsua_transport_info *info) 864 910 { 865 pjsip_transport *tp;911 struct transport_data *t = &pjsua_var.tpdata[id]; 866 912 867 913 pj_memset(info, 0, sizeof(*info)); … … 871 917 872 918 /* Make sure that transport exists */ 873 PJ_ASSERT_RETURN(pjsua_var.tpdata[id]. tp!= NULL, PJ_EINVAL);919 PJ_ASSERT_RETURN(pjsua_var.tpdata[id].data.ptr != NULL, PJ_EINVAL); 874 920 875 921 PJSUA_LOCK(); 876 922 877 tp = pjsua_var.tpdata[id].tp; 878 if (tp == NULL) { 879 PJSUA_UNLOCK(); 880 return PJ_EINVALIDOP; 881 } 923 if (pjsua_var.tpdata[id].type == PJSIP_TRANSPORT_UDP) { 924 925 pjsip_transport *tp = t->data.tp; 926 927 if (tp == NULL) { 928 PJSUA_UNLOCK(); 929 return PJ_EINVALIDOP; 930 } 882 931 883 info->id = id; 884 info->type = tp->key.type; 885 info->type_name = pj_str(tp->type_name); 886 info->info = pj_str(tp->info); 887 info->flag = tp->flag; 888 info->addr_len = tp->addr_len; 889 info->local_addr = tp->local_addr; 890 info->local_name = tp->local_name; 891 info->usage_count = pj_atomic_get(tp->ref_cnt); 932 info->id = id; 933 info->type = tp->key.type; 934 info->type_name = pj_str(tp->type_name); 935 info->info = pj_str(tp->info); 936 info->flag = tp->flag; 937 info->addr_len = tp->addr_len; 938 info->local_addr = tp->local_addr; 939 info->local_name = tp->local_name; 940 info->usage_count = pj_atomic_get(tp->ref_cnt); 941 942 } else if (pjsua_var.tpdata[id].type == PJSIP_TRANSPORT_TCP) { 943 944 pjsip_tpfactory *factory = t->data.factory; 945 946 if (factory == NULL) { 947 PJSUA_UNLOCK(); 948 return PJ_EINVALIDOP; 949 } 950 951 info->id = id; 952 info->type = t->type; 953 info->type_name = pj_str("TCP"); 954 info->info = pj_str("TCP transport"); 955 info->flag = factory->flag; 956 info->addr_len = sizeof(factory->local_addr); 957 info->local_addr = factory->local_addr; 958 info->local_name = factory->addr_name; 959 info->usage_count = 0; 960 961 } 962 892 963 893 964 PJSUA_UNLOCK(); … … 907 978 908 979 /* Make sure that transport exists */ 909 PJ_ASSERT_RETURN(pjsua_var.tpdata[id]. tp!= NULL, PJ_EINVAL);980 PJ_ASSERT_RETURN(pjsua_var.tpdata[id].data.ptr != NULL, PJ_EINVAL); 910 981 911 982 … … 927 998 928 999 /* Make sure that transport exists */ 929 PJ_ASSERT_RETURN(pjsua_var.tpdata[id]. tp!= NULL, PJ_EINVAL);1000 PJ_ASSERT_RETURN(pjsua_var.tpdata[id].data.ptr != NULL, PJ_EINVAL); 930 1001 931 1002
Note: See TracChangeset
for help on using the changeset viewer.