Ignore:
Timestamp:
Dec 28, 2016 3:40:07 AM (7 years ago)
Author:
nanang
Message:

Re #1900: More merged from trunk (r5512 mistakenly contains merged changes in third-party dir only).

Location:
pjproject/branches/projects/uwp
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/projects/uwp

  • pjproject/branches/projects/uwp/pjsip/src/pjsip/sip_transport_tls.c

    r5200 r5513  
    171171    pj_strerror(status, errmsg, sizeof(errmsg)); 
    172172 
    173     PJ_LOG(1,(sender, "%s: %s [code=%d]", title, errmsg, status)); 
     173    PJ_LOG(3,(sender, "%s: %s [code=%d]", title, errmsg, status)); 
    174174} 
    175175 
     
    310310                                                pjsip_tpfactory **p_factory) 
    311311{ 
     312    enum { INFO_LEN = 100 }; 
     313    char local_addr[PJ_INET6_ADDRSTRLEN+10]; 
    312314    pj_pool_t *pool; 
    313315    pj_bool_t is_ipv6; 
     
    315317    pj_uint32_t sip_ssl_proto; 
    316318    struct tls_listener *listener; 
    317     pj_ssl_sock_param ssock_param; 
     319    pj_ssl_sock_param ssock_param, newsock_param; 
    318320    pj_sockaddr *listener_addr; 
    319321    pj_bool_t has_listener; 
     
    376378    ssock_param.sock_af = af; 
    377379    ssock_param.cb.on_accept_complete = &on_accept_complete; 
    378     ssock_param.cb.on_data_read = &on_data_read; 
    379     ssock_param.cb.on_data_sent = &on_data_sent; 
    380380    ssock_param.async_cnt = async_cnt; 
    381381    ssock_param.ioqueue = pjsip_endpt_get_ioqueue(endpt); 
     382    ssock_param.timer_heap = pjsip_endpt_get_timer_heap(endpt);     
    382383    ssock_param.require_client_cert = listener->tls_setting.require_client_cert; 
    383384    ssock_param.timeout = listener->tls_setting.timeout; 
     
    391392    ssock_param.ciphers_num = listener->tls_setting.ciphers_num; 
    392393    ssock_param.ciphers = listener->tls_setting.ciphers; 
     394    ssock_param.curves_num = listener->tls_setting.curves_num; 
     395    ssock_param.curves = listener->tls_setting.curves; 
     396    ssock_param.sigalgs = listener->tls_setting.sigalgs; 
     397    ssock_param.entropy_type = listener->tls_setting.entropy_type; 
     398    ssock_param.entropy_path = listener->tls_setting.entropy_path; 
    393399    ssock_param.reuse_addr = listener->tls_setting.reuse_addr; 
    394400    ssock_param.qos_type = listener->tls_setting.qos_type; 
     
    444450        pj_sockaddr_init(af, &listener->bound_addr, NULL, 0); 
    445451    } 
    446  
    447 #if !(defined(PJSIP_TLS_TRANSPORT_DONT_CREATE_LISTENER) && \ 
    448       PJSIP_TLS_TRANSPORT_DONT_CREATE_LISTENER != 0) 
    449452 
    450453    /* Check if certificate/CA list for SSL socket is set */ 
     
    462465        if (status != PJ_SUCCESS) 
    463466            goto on_error; 
    464  
     467     } 
     468 
     469#if !(defined(PJSIP_TLS_TRANSPORT_DONT_CREATE_LISTENER) && \ 
     470      PJSIP_TLS_TRANSPORT_DONT_CREATE_LISTENER != 0) 
     471 
     472     if (listener->cert) { 
    465473        status = pj_ssl_sock_set_certificate(listener->ssock, pool,  
    466474                                             listener->cert); 
     
    474482    has_listener = PJ_FALSE; 
    475483 
    476     status = pj_ssl_sock_start_accept(listener->ssock, pool,  
     484    pj_memcpy(&newsock_param, &ssock_param, sizeof(newsock_param)); 
     485    newsock_param.async_cnt = 1; 
     486    newsock_param.cb.on_data_read = &on_data_read; 
     487    newsock_param.cb.on_data_sent = &on_data_sent; 
     488    status = pj_ssl_sock_start_accept2(listener->ssock, pool,  
    477489                          (pj_sockaddr_t*)listener_addr,  
    478                           pj_sockaddr_get_len((pj_sockaddr_t*)listener_addr)); 
     490                          pj_sockaddr_get_len((pj_sockaddr_t*)listener_addr), 
     491                          &newsock_param); 
    479492    if (status == PJ_SUCCESS || status == PJ_EPENDING) { 
    480493        pj_ssl_sock_info info; 
     
    543556        goto on_error; 
    544557    } 
     558 
     559    /* Set transport info. */ 
     560    if (listener->factory.info == NULL) { 
     561        listener->factory.info = (char*) pj_pool_alloc(listener->factory.pool, 
     562                                                       INFO_LEN); 
     563    } 
     564    pj_sockaddr_print(listener_addr, local_addr, sizeof(local_addr), 3); 
     565    pj_ansi_snprintf(  
     566        listener->factory.info, INFO_LEN, "tls %s [published as %.*s:%d]", 
     567        local_addr, 
     568        (int)listener->factory.addr_name.host.slen, 
     569        listener->factory.addr_name.host.ptr, 
     570        listener->factory.addr_name.port); 
    545571 
    546572    if (has_listener) { 
     
    740766    tls->base.do_shutdown = &tls_shutdown; 
    741767    tls->base.destroy = &tls_destroy_transport; 
     768    tls->base.factory = &listener->factory; 
    742769 
    743770    tls->ssock = ssock; 
     
    10371064    ssock_param.async_cnt = 1; 
    10381065    ssock_param.ioqueue = pjsip_endpt_get_ioqueue(listener->endpt); 
     1066    ssock_param.timer_heap = pjsip_endpt_get_timer_heap(listener->endpt); 
    10391067    ssock_param.server_name = remote_name; 
    10401068    ssock_param.timeout = listener->tls_setting.timeout; 
     
    10481076    ssock_param.ciphers_num = listener->tls_setting.ciphers_num; 
    10491077    ssock_param.ciphers = listener->tls_setting.ciphers; 
     1078    ssock_param.curves_num = listener->tls_setting.curves_num; 
     1079    ssock_param.curves = listener->tls_setting.curves; 
     1080    ssock_param.sigalgs = listener->tls_setting.sigalgs; 
     1081    ssock_param.entropy_type = listener->tls_setting.entropy_type; 
     1082    ssock_param.entropy_path = listener->tls_setting.entropy_path; 
    10501083    ssock_param.qos_type = listener->tls_setting.qos_type; 
    10511084    ssock_param.qos_ignore_error = listener->tls_setting.qos_ignore_error; 
     
    12921325        /* Start keep-alive timer */ 
    12931326        if (pjsip_cfg()->tls.keep_alive_interval) { 
    1294             pj_time_val delay = {pjsip_cfg()->tls.keep_alive_interval, 0}; 
     1327            pj_time_val delay = {0};         
     1328            delay.sec = pjsip_cfg()->tls.keep_alive_interval; 
    12951329            pjsip_endpt_schedule_timer(listener->endpt,  
    12961330                                       &tls->ka_timer,  
     
    17661800    /* Start keep-alive timer */ 
    17671801    if (pjsip_cfg()->tls.keep_alive_interval) { 
    1768         pj_time_val delay = { pjsip_cfg()->tls.keep_alive_interval, 0 }; 
     1802        pj_time_val delay = {0};             
     1803        delay.sec = pjsip_cfg()->tls.keep_alive_interval; 
    17691804        pjsip_endpt_schedule_timer(tls->base.endpt, &tls->ka_timer,  
    17701805                                   &delay); 
Note: See TracChangeset for help on using the changeset viewer.