Ignore:
Timestamp:
Sep 18, 2018 12:07:50 PM (9 months ago)
Author:
riza
Message:

Close #2150: Add new callback to notify when accept operation fails on TLS
listener.

File:
1 edited

Legend:

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

    r5854 r5885  
    122122 
    123123/* This callback is called when pending accept() operation completes. */ 
    124 static pj_bool_t on_accept_complete(pj_ssl_sock_t *ssock, 
     124static pj_bool_t on_accept_complete2(pj_ssl_sock_t *ssock, 
    125125                                    pj_ssl_sock_t *new_ssock, 
    126126                                    const pj_sockaddr_t *src_addr, 
    127                                     int src_addr_len); 
     127                                    int src_addr_len, 
     128                                    pj_status_t status); 
    128129 
    129130/* Callback on incoming data */ 
     
    295296    pj_ssl_sock_param_default(ssock_param); 
    296297    ssock_param->sock_af = af; 
    297     ssock_param->cb.on_accept_complete = &on_accept_complete; 
     298    ssock_param->cb.on_accept_complete2 = &on_accept_complete2; 
    298299    ssock_param->async_cnt = listener->async_cnt; 
    299300    ssock_param->ioqueue = pjsip_endpt_get_ioqueue(listener->endpt); 
     
    13011302 
    13021303 
    1303 /* 
    1304  * This callback is called by SSL socket when pending accept() operation 
    1305  * has completed. 
    1306  */ 
    1307 static pj_bool_t on_accept_complete(pj_ssl_sock_t *ssock, 
    1308                                     pj_ssl_sock_t *new_ssock, 
    1309                                     const pj_sockaddr_t *src_addr, 
    1310                                     int src_addr_len) 
    1311 { 
     1304static pj_bool_t on_accept_complete2(pj_ssl_sock_t *ssock, 
     1305                                     pj_ssl_sock_t *new_ssock, 
     1306                                     const pj_sockaddr_t *src_addr, 
     1307                                     int src_addr_len,  
     1308                                     pj_status_t accept_status) 
     1309{     
    13121310    struct tls_listener *listener; 
    13131311    struct tls_transport *tls; 
     
    13241322    listener = (struct tls_listener*) pj_ssl_sock_get_user_data(ssock); 
    13251323 
     1324    if (accept_status != PJ_SUCCESS) { 
     1325        if (listener->tls_setting.on_accept_fail_cb) { 
     1326            pjsip_tls_on_accept_fail_param param; 
     1327            pj_bzero(&param, sizeof(param)); 
     1328            param.status = accept_status; 
     1329            param.remote_addr = src_addr; 
     1330            (*listener->tls_setting.on_accept_fail_cb) (&param); 
     1331        } 
     1332 
     1333        return PJ_FALSE; 
     1334    } 
     1335 
    13261336    PJ_ASSERT_RETURN(new_ssock, PJ_TRUE); 
    13271337 
    1328     if (!listener->is_registered) 
     1338    if (!listener->is_registered) { 
     1339        if (listener->tls_setting.on_accept_fail_cb) { 
     1340            pjsip_tls_on_accept_fail_param param; 
     1341            pj_bzero(&param, sizeof(param)); 
     1342            param.status = PJSIP_TLS_EACCEPT; 
     1343            param.remote_addr = src_addr; 
     1344            (*listener->tls_setting.on_accept_fail_cb) (&param); 
     1345        } 
    13291346        return PJ_FALSE; 
     1347    }    
    13301348 
    13311349    PJ_LOG(4,(listener->factory.obj_name,  
     
    13441362    if (status != PJ_SUCCESS) { 
    13451363        pj_ssl_sock_close(new_ssock); 
     1364 
     1365        if (listener->tls_setting.on_accept_fail_cb) { 
     1366            pjsip_tls_on_accept_fail_param param; 
     1367            pj_bzero(&param, sizeof(param)); 
     1368            param.status = status; 
     1369            param.remote_addr = src_addr; 
     1370            (*listener->tls_setting.on_accept_fail_cb) (&param); 
     1371        } 
    13461372        return PJ_TRUE; 
    13471373    } 
     
    13581384                         &ssl_info.local_addr, &tmp_src_addr, NULL, &tls); 
    13591385     
    1360     if (status != PJ_SUCCESS) 
     1386    if (status != PJ_SUCCESS) { 
     1387        if (listener->tls_setting.on_accept_fail_cb) { 
     1388            pjsip_tls_on_accept_fail_param param; 
     1389            pj_bzero(&param, sizeof(param)); 
     1390            param.status = status; 
     1391            param.remote_addr = src_addr; 
     1392            (*listener->tls_setting.on_accept_fail_cb) (&param); 
     1393        } 
    13611394        return PJ_TRUE; 
     1395    } 
    13621396 
    13631397    /* Set the "pending" SSL socket user data */ 
     
    14401474    return PJ_TRUE; 
    14411475} 
     1476 
     1477/* 
     1478 * This callback is called by SSL socket when pending accept() operation 
     1479 * has completed. 
     1480 */ 
     1481//static pj_bool_t on_accept_complete(pj_ssl_sock_t *ssock, 
     1482//                                  pj_ssl_sock_t *new_ssock, 
     1483//                                  const pj_sockaddr_t *src_addr, 
     1484//                                  int src_addr_len) 
     1485//{ 
     1486//    PJ_UNUSED_ARG(src_addr_len); 
     1487//} 
    14421488 
    14431489 
Note: See TracChangeset for help on using the changeset viewer.