# HG changeset patch # User Sebastien Decugis # Date 1284009474 -32400 # Node ID 72c511043f05794a2f67af6417b8bcfb15fd76a3 # Parent 6af365b6f9551c7f4cbbd09f3d073c6199621d17 A few bug fixes on the RADIUS/Diameter gateway. diff -r 6af365b6f955 -r 72c511043f05 extensions/app_radgw/rgw_worker.c --- a/extensions/app_radgw/rgw_worker.c Wed Sep 08 15:52:29 2010 +0900 +++ b/extensions/app_radgw/rgw_worker.c Thu Sep 09 14:17:54 2010 +0900 @@ -284,11 +284,6 @@ } - if (!keepsession) { - /* Destroy remaining session data (stateless gateway) */ - CHECK_FCT_DO( fd_sess_destroy(&pa->sess), ); - } - /* Now try and send the RADIUS answer */ if (rad_ans) { CHECK_FCT_DO( rgw_client_finish_send(&rad_ans, pa->rad, pa->cli), ); @@ -301,6 +296,11 @@ *ans = NULL; } + if (!keepsession) { + /* Destroy remaining session data (stateless gateway) */ + CHECK_FCT_DO( fd_sess_destroy(&pa->sess), ); + } + /* Clear the RADIUS request */ if (pa->rad) { rgw_msg_free(&pa->rad); diff -r 6af365b6f955 -r 72c511043f05 extensions/app_radgw/rgwx_acct.c --- a/extensions/app_radgw/rgwx_acct.c Wed Sep 08 15:52:29 2010 +0900 +++ b/extensions/app_radgw/rgwx_acct.c Thu Sep 09 14:17:54 2010 +0900 @@ -489,7 +489,7 @@ if (!*session) { CHECK_FCT( fd_sess_fromsid ( (char *)/* cast should be removed later */si, si_len, session, NULL) ); - TRACE_DEBUG(FULL, "[auth.rgwx] Translating new accounting message for session '%.*s'...", si_len, si); + TRACE_DEBUG(FULL, "[acct.rgwx] Translating new accounting message for session '%.*s'...", si_len, si); /* Add the Session-Id AVP as first AVP */ CHECK_FCT( fd_msg_avp_new ( cs->dict.Session_Id, 0, &avp ) ); @@ -1261,25 +1261,25 @@ break; default: - fd_log_debug("[auth.rgwx] Received Diameter answer with error code '%d' from server '%.*s', session %.*s, not translating into Accounting-Response\n", + fd_log_debug("[acct.rgwx] Received Diameter answer with error code '%d' from server '%.*s', session %.*s, not translating into Accounting-Response\n", ahdr->avp_value->u32, oh->avp_value->os.len, oh->avp_value->os.data, sid->avp_value->os.len, sid->avp_value->os.data); CHECK_FCT( fd_msg_search_avp (*diam_ans, cs->dict.Error_Message, &avp) ); if (avp) { CHECK_FCT( fd_msg_avp_hdr ( avp, &ahdr ) ); - fd_log_debug("[auth.rgwx] Error-Message content: '%.*s'\n", + fd_log_debug("[acct.rgwx] Error-Message content: '%.*s'\n", ahdr->avp_value->os.len, ahdr->avp_value->os.data); } CHECK_FCT( fd_msg_search_avp (*diam_ans, cs->dict.Error_Reporting_Host, &avp) ); if (avp) { CHECK_FCT( fd_msg_avp_hdr ( avp, &ahdr ) ); - fd_log_debug("[auth.rgwx] Error-Reporting-Host: '%.*s'\n", + fd_log_debug("[acct.rgwx] Error-Reporting-Host: '%.*s'\n", ahdr->avp_value->os.len, ahdr->avp_value->os.data); } CHECK_FCT( fd_msg_search_avp (*diam_ans, cs->dict.Failed_AVP, &avp) ); if (avp) { - fd_log_debug("[auth.rgwx] Failed-AVP was included in the message.\n"); + fd_log_debug("[acct.rgwx] Failed-AVP was included in the message.\n"); /* Dump its content ? */ } return -1;