Ignore:
Timestamp:
Sep 18, 2018 12:07:50 PM (6 years 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/pjlib/src/pj/ssl_sock_ossl.c

    r5821 r5885  
    17101710                      errmsg)); 
    17111711 
     1712            if (*ssock->param.cb.on_accept_complete2) { 
     1713                (*ssock->param.cb.on_accept_complete2)  
     1714                      (ssock->parent, ssock, (pj_sockaddr_t*)&ssock->rem_addr,  
     1715                      pj_sockaddr_get_len((pj_sockaddr_t*)&ssock->rem_addr),  
     1716                      status); 
     1717            } 
     1718 
    17121719            /* Originally, this is a workaround for ticket #985. However, 
    17131720             * a race condition may occur in multiple worker threads 
     
    17491756        } 
    17501757        /* Notify application the newly accepted SSL socket */ 
    1751         if (ssock->param.cb.on_accept_complete) { 
     1758        if (ssock->param.cb.on_accept_complete2) { 
     1759            pj_bool_t ret; 
     1760            ret = (*ssock->param.cb.on_accept_complete2)  
     1761                    (ssock->parent, ssock, (pj_sockaddr_t*)&ssock->rem_addr,  
     1762                    pj_sockaddr_get_len((pj_sockaddr_t*)&ssock->rem_addr),  
     1763                    status); 
     1764            if (ret == PJ_FALSE) 
     1765                return PJ_FALSE;         
     1766        } else if (ssock->param.cb.on_accept_complete) { 
    17521767            pj_bool_t ret; 
    17531768            ret = (*ssock->param.cb.on_accept_complete) 
     
    25202535 
    25212536 
     2537static pj_bool_t asock_on_accept_complete2(pj_activesock_t *asock, 
     2538                                           pj_sock_t newsock, 
     2539                                           const pj_sockaddr_t *src_addr, 
     2540                                           int src_addr_len, 
     2541                                           pj_status_t status) 
     2542{ 
     2543    pj_bool_t ret = PJ_TRUE; 
     2544    if (status != PJ_SUCCESS) { 
     2545        pj_ssl_sock_t *ssock = (pj_ssl_sock_t*) 
     2546                        pj_activesock_get_user_data(asock); 
     2547 
     2548        if (ssock->param.cb.on_accept_complete2) { 
     2549            (*ssock->param.cb.on_accept_complete2) (ssock->parent, ssock,  
     2550                                                    src_addr, src_addr_len,  
     2551                                                    status); 
     2552        } 
     2553    } else { 
     2554        ret = asock_on_accept_complete(asock, newsock, src_addr, src_addr_len); 
     2555    } 
     2556    return ret; 
     2557} 
     2558 
     2559 
    25222560static pj_bool_t asock_on_connect_complete (pj_activesock_t *asock, 
    25232561                                            pj_status_t status) 
     
    34263464 
    34273465    pj_bzero(&asock_cb, sizeof(asock_cb)); 
    3428     asock_cb.on_accept_complete = asock_on_accept_complete; 
     3466    //asock_cb.on_accept_complete = asock_on_accept_complete; 
     3467    asock_cb.on_accept_complete2 = asock_on_accept_complete2; 
    34293468 
    34303469    status = pj_activesock_create(pool, 
Note: See TracChangeset for help on using the changeset viewer.