Ignore:
Timestamp:
Dec 18, 2014 4:40:35 AM (9 years ago)
Author:
riza
Message:

Re #1806: Implement SSL/TLS setting to set protocol operation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsip/sip_transport_tls.c

    r4882 r4968  
    186186 
    187187 
     188static pj_uint32_t ssl_get_proto(pjsip_ssl_method ssl_method, pj_uint32_t proto) 
     189{ 
     190    pj_uint32_t out_proto; 
     191 
     192    if (proto) 
     193        return proto; 
     194 
     195    if (ssl_method == PJSIP_SSL_UNSPECIFIED_METHOD) 
     196        ssl_method = PJSIP_SSL_DEFAULT_METHOD; 
     197 
     198    switch(ssl_method) { 
     199    case PJSIP_SSLV2_METHOD: 
     200        out_proto = PJ_SSL_SOCK_PROTO_SSL2; 
     201        break; 
     202    case PJSIP_SSLV3_METHOD: 
     203        out_proto = PJ_SSL_SOCK_PROTO_SSL3; 
     204        break; 
     205    case PJSIP_TLSV1_METHOD: 
     206        out_proto = PJ_SSL_SOCK_PROTO_TLS1; 
     207        break; 
     208    case PJSIP_TLSV1_1_METHOD: 
     209        out_proto = PJ_SSL_SOCK_PROTO_TLS1_1; 
     210        break; 
     211    case PJSIP_TLSV1_2_METHOD: 
     212        out_proto = PJ_SSL_SOCK_PROTO_TLS1_2; 
     213        break; 
     214    case PJSIP_SSLV23_METHOD: 
     215        out_proto = PJ_SSL_SOCK_PROTO_SSL23; 
     216        break; 
     217    default: 
     218        out_proto = PJ_SSL_SOCK_PROTO_DEFAULT; 
     219        break; 
     220    }    
     221    return out_proto; 
     222} 
     223 
     224 
    188225static void tls_init_shutdown(struct tls_transport *tls, pj_status_t status) 
    189226{ 
     
    276313    pj_bool_t is_ipv6; 
    277314    int af, sip_ssl_method; 
     315    pj_uint32_t sip_ssl_proto; 
    278316    struct tls_listener *listener; 
    279317    pj_ssl_sock_param ssock_param; 
     
    369407 
    370408    sip_ssl_method = listener->tls_setting.method; 
    371     if (sip_ssl_method==PJSIP_SSL_UNSPECIFIED_METHOD) 
    372         sip_ssl_method = PJSIP_SSL_DEFAULT_METHOD; 
    373  
    374     switch(sip_ssl_method) { 
    375     case PJSIP_TLSV1_METHOD: 
    376         ssock_param.proto = PJ_SSL_SOCK_PROTO_TLS1; 
    377         break; 
    378     case PJSIP_SSLV2_METHOD: 
    379         ssock_param.proto = PJ_SSL_SOCK_PROTO_SSL2; 
    380         break; 
    381     case PJSIP_SSLV3_METHOD: 
    382         ssock_param.proto = PJ_SSL_SOCK_PROTO_SSL3; 
    383         break; 
    384     case PJSIP_SSLV23_METHOD: 
    385         ssock_param.proto = PJ_SSL_SOCK_PROTO_SSL23; 
    386         break; 
    387     default: 
    388         ssock_param.proto = PJ_SSL_SOCK_PROTO_DEFAULT; 
    389         break; 
    390     } 
     409    sip_ssl_proto = listener->tls_setting.proto; 
     410    ssock_param.proto = ssl_get_proto(sip_ssl_method, sip_ssl_proto);  
    391411 
    392412    /* Create group lock */ 
     
    964984    struct tls_transport *tls; 
    965985    int sip_ssl_method; 
     986    pj_uint32_t sip_ssl_proto; 
    966987    pj_pool_t *pool; 
    967988    pj_grp_lock_t *glock; 
     
    10281049 
    10291050    sip_ssl_method = listener->tls_setting.method; 
    1030     if (sip_ssl_method==PJSIP_SSL_UNSPECIFIED_METHOD) 
    1031         sip_ssl_method = PJSIP_SSL_DEFAULT_METHOD; 
    1032  
    1033     switch(sip_ssl_method) { 
    1034     case PJSIP_TLSV1_METHOD: 
    1035         ssock_param.proto = PJ_SSL_SOCK_PROTO_TLS1; 
    1036         break; 
    1037     case PJSIP_SSLV2_METHOD: 
    1038         ssock_param.proto = PJ_SSL_SOCK_PROTO_SSL2; 
    1039         break; 
    1040     case PJSIP_SSLV3_METHOD: 
    1041         ssock_param.proto = PJ_SSL_SOCK_PROTO_SSL3; 
    1042         break; 
    1043     case PJSIP_SSLV23_METHOD: 
    1044         ssock_param.proto = PJ_SSL_SOCK_PROTO_SSL23; 
    1045         break; 
    1046     default: 
    1047         ssock_param.proto = PJ_SSL_SOCK_PROTO_DEFAULT; 
    1048         break; 
    1049     } 
     1051    sip_ssl_proto = listener->tls_setting.proto; 
     1052    ssock_param.proto = ssl_get_proto(sip_ssl_method, sip_ssl_proto); 
    10501053 
    10511054    /* Create group lock */ 
Note: See TracChangeset for help on using the changeset viewer.