# HG changeset patch # User Sebastien Decugis # Date 1245822687 -32400 # Node ID 89e0afe61a529a264f8a801feb191491bb3156e9 # Parent cd4d9118853079bde55a553e28ce98338d1c31d8 Removed ASSERT 0 diff -r cd4d91188530 -r 89e0afe61a52 extensions/radius_gw/rgw_work.c --- a/extensions/radius_gw/rgw_work.c Wed Jun 24 14:33:57 2009 +0900 +++ b/extensions/radius_gw/rgw_work.c Wed Jun 24 14:51:27 2009 +0900 @@ -66,6 +66,9 @@ { struct pending_answer * pa = (struct pending_answer *)paback; struct radius_msg * rad_ans; + msg_avp_t *avp; + msg_avp_data_t *adata; + int pb = 0; TRACE_ENTRY("%p %p", pa, ans); CHECK_PARAMS_DO( pa && ans, return ); @@ -77,7 +80,19 @@ CHECK_FCT_DO( rgw_extensions_loop_ans(pa->rad, pa->sess, ans, &rad_ans, pa->cli), goto out ); /* Now check what AVPs remain in the diameter answer. If AVPs with the 'M' flag are here, we have a problem... */ - ASSERT(0); + CHECK_FCT( msg_browse(*ans, MSG_BRW_FIRST_CHILD, &avp, NULL) ); + while (avp) { + CHECK_FCT( msg_avp_data ( avp, &adata ) ); + TRACE_DEBUG(ANNOYING, "Remaining AVP code %d", adata->avp_code); + if (adata->avp_flags & AVP_FLAG_MANDATORY) { + pb++; + } + CHECK_FCT( msg_browse(avp, MSG_BRW_NEXT, &avp, NULL) ); + } + + if (pb) { + TRACE_DEBUG(INFO, "WARNING: %d mandatory AVP in the Diameter answer have not been converted! Please use sub_debug for more information.", pb); + } /* Now try and send the RADIUS answer */ if (rad_ans) {