Ignore:
Timestamp:
Jul 25, 2012 2:29:28 PM (12 years ago)
Author:
nanang
Message:

Close #1561: Added new user credentials lookup callback that also passes 'pjsip_rx_data'.

File:
1 edited

Legend:

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

    r3553 r4214  
    4141    PJ_ASSERT_RETURN(pool && auth_srv && realm && lookup, PJ_EINVAL); 
    4242 
     43    pj_bzero(auth_srv, sizeof(*auth_srv)); 
    4344    pj_strdup( pool, &auth_srv->realm, realm); 
    4445    auth_srv->lookup = lookup; 
    4546    auth_srv->is_proxy = (options & PJSIP_AUTH_SRV_IS_PROXY); 
     47 
     48    return PJ_SUCCESS; 
     49} 
     50 
     51/* 
     52 * Initialize server authorization session data structure to serve the  
     53 * specified realm and to use lookup_func function to look for the credential  
     54 * info.  
     55 */ 
     56PJ_DEF(pj_status_t) pjsip_auth_srv_init2( 
     57                                    pj_pool_t *pool, 
     58                                    pjsip_auth_srv *auth_srv, 
     59                                    const pjsip_auth_srv_init_param *param) 
     60{ 
     61    PJ_ASSERT_RETURN(pool && auth_srv && param, PJ_EINVAL); 
     62 
     63    pj_bzero(auth_srv, sizeof(*auth_srv)); 
     64    pj_strdup( pool, &auth_srv->realm, param->realm); 
     65    auth_srv->lookup2 = param->lookup2; 
     66    auth_srv->is_proxy = (param->options & PJSIP_AUTH_SRV_IS_PROXY); 
    4667 
    4768    return PJ_SUCCESS; 
     
    149170 
    150171    /* Find the credential information for the account. */ 
    151     status = (*auth_srv->lookup)(rdata->tp_info.pool, &auth_srv->realm, 
    152                                  &acc_name, &cred_info); 
    153     if (status != PJ_SUCCESS) { 
    154         *status_code = PJSIP_SC_FORBIDDEN; 
    155         return status; 
     172    if (auth_srv->lookup2) { 
     173        pjsip_auth_lookup_cred_param param; 
     174 
     175        pj_bzero(&param, sizeof(param)); 
     176        param.realm = auth_srv->realm; 
     177        param.acc_name = acc_name; 
     178        param.rdata = rdata; 
     179        status = (*auth_srv->lookup2)(rdata->tp_info.pool, &param, &cred_info); 
     180        if (status != PJ_SUCCESS) { 
     181            *status_code = PJSIP_SC_FORBIDDEN; 
     182            return status; 
     183        } 
     184    } else { 
     185        status = (*auth_srv->lookup)(rdata->tp_info.pool, &auth_srv->realm, 
     186                                     &acc_name, &cred_info); 
     187        if (status != PJ_SUCCESS) { 
     188            *status_code = PJSIP_SC_FORBIDDEN; 
     189            return status; 
     190        } 
    156191    } 
    157192 
Note: See TracChangeset for help on using the changeset viewer.