Navigation



Ignore:
Timestamp:
Mar 20, 2013, 12:13:14 AM (11 years ago)
Author:
Sebastien Decugis <sdecugis@freediameter.net>
Branch:
default
Children:
997:632913581c37, 998:ad6c1ee04d2d
Phase:
public
Message:

Fix management of sessions in app_radgw: sessions are simply associated with messages, that is sufficient

File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/app_radgw/rgw_plugins.c

    r974 r996  
    328328}
    329329
    330 int rgw_plg_loop_req(struct rgw_radius_msg_meta **rad, struct session **session, struct msg **diam_msg, struct rgw_client * cli)
     330int rgw_plg_loop_req(struct rgw_radius_msg_meta **rad, struct msg **diam_msg, struct rgw_client * cli)
    331331{
    332332        int ret = 0;
     
    334334        struct radius_msg * rad_ans = NULL;
    335335       
    336         TRACE_ENTRY("%p %p %p %p", rad, session, diam_msg, cli);
    337         CHECK_PARAMS( rad && *rad && session && diam_msg && *diam_msg && cli);
     336        TRACE_ENTRY("%p %p %p", rad, diam_msg, cli);
     337        CHECK_PARAMS( rad && *rad && diam_msg && *diam_msg && cli);
    338338       
    339339        /* First, get the list of extensions for this message */
     
    348348                if (plg->descriptor->rgwp_rad_req) {
    349349                        TRACE_DEBUG(ANNOYING, "Calling next plugin: %s", plg->descriptor->rgwp_name);
    350                         ret = (*plg->descriptor->rgwp_rad_req)(plg->cs, session, &(*rad)->radius, &rad_ans, diam_msg, cli);
     350                        ret = (*plg->descriptor->rgwp_rad_req)(plg->cs, &(*rad)->radius, &rad_ans, diam_msg, cli);
    351351                        if (ret)
    352352                                break;
     
    368368        }
    369369       
    370         /* Destroy the session, there won't be a reply message to retrieve the data */
    371         if (*session) {
    372                 CHECK_FCT_DO( fd_sess_destroy(session), );
    373         }
    374        
    375370        /* Send the radius message back if required */
    376371        if ((ret == -2) && rad_ans && rad) {
     
    390385
    391386/* Loop in the extension list (same as req) to convert data from diam_ans to rad_ans */
    392 int rgw_plg_loop_ans(struct rgw_radius_msg_meta *req, struct session *session, struct msg **diam_ans, struct radius_msg ** rad_ans, struct rgw_client * cli, int * stateful)
     387int rgw_plg_loop_ans(struct rgw_radius_msg_meta *req, struct msg **diam_ans, struct radius_msg ** rad_ans, struct rgw_client * cli)
    393388{
    394389        int ret = 0;
    395390        struct fd_list * head = NULL, *li;
    396391       
    397         TRACE_ENTRY("%p %p %p %p %p %p", req, session, diam_ans, rad_ans, cli, stateful);
    398         CHECK_PARAMS( req && session && diam_ans && *diam_ans && rad_ans && *rad_ans && cli && stateful);
    399        
    400         *stateful = 0; /* default: stateless gateway */
     392        TRACE_ENTRY("%p %p %p %p", req, diam_ans, rad_ans, cli);
     393        CHECK_PARAMS( req && diam_ans && *diam_ans && rad_ans && *rad_ans && cli);
    401394       
    402395        /* Get the list of extensions of the RADIUS request */
     
    412405                if (plg->descriptor->rgwp_diam_ans) {
    413406                        TRACE_DEBUG(ANNOYING, "Calling next plugin: %s", plg->descriptor->rgwp_name);
    414                         ret = (*plg->descriptor->rgwp_diam_ans)(plg->cs, session, diam_ans, rad_ans, (void *)cli, &locstateful);
     407                        ret = (*plg->descriptor->rgwp_diam_ans)(plg->cs, diam_ans, rad_ans, (void *)cli);
    415408                        if (ret)
    416409                                break;
    417                         *stateful |= locstateful;
    418410                } else {
    419411                        TRACE_DEBUG(ANNOYING, "Skipping extension '%s' (NULL callback)", plg->descriptor->rgwp_name);
Note: See TracChangeset for help on using the changeset viewer.