Mercurial > hg > freeDiameter
diff libfdcore/routing_dispatch.c @ 1230:e72c9dad62ac
Fix issue with generating Failed-AVP when the error is DIAMETER_MISSING_AVP. Also fix a memory leak in that case
author | Sebastien Decugis <sdecugis@freediameter.net> |
---|---|
date | Sun, 21 Jul 2013 11:57:39 +0200 |
parents | 581bbd48524a |
children | 8f9684264fe0 |
line wrap: on
line diff
--- a/libfdcore/routing_dispatch.c Thu Jul 18 16:08:54 2013 +0200 +++ b/libfdcore/routing_dispatch.c Sun Jul 21 11:57:39 2013 +0200 @@ -609,6 +609,7 @@ if (error_info.pei_errcode) { fd_hook_call(HOOK_MESSAGE_PARSING_ERROR, msgptr, NULL, error_info.pei_message ?: error_info.pei_errcode, fd_msg_pmdl_get(msgptr)); CHECK_FCT( return_error( &msgptr, error_info.pei_errcode, error_info.pei_message, error_info.pei_avp) ); + if (error_info.pei_avp_free) { fd_msg_free(error_info.pei_avp); } return 0; } else { fd_hook_call(HOOK_MESSAGE_PARSING_ERROR, msgptr, NULL, "Unspecified error while parsing Destination-Host AVP", fd_msg_pmdl_get(msgptr)); @@ -631,6 +632,7 @@ if (error_info.pei_errcode) { fd_hook_call(HOOK_MESSAGE_PARSING_ERROR, msgptr, NULL, error_info.pei_message ?: error_info.pei_errcode, fd_msg_pmdl_get(msgptr)); CHECK_FCT( return_error( &msgptr, error_info.pei_errcode, error_info.pei_message, error_info.pei_avp) ); + if (error_info.pei_avp_free) { fd_msg_free(error_info.pei_avp); } return 0; } else { fd_hook_call(HOOK_MESSAGE_PARSING_ERROR, msgptr, NULL, "Unspecified error while parsing Destination-Realm AVP", fd_msg_pmdl_get(msgptr)); @@ -655,6 +657,7 @@ if (error_info.pei_errcode) { fd_hook_call(HOOK_MESSAGE_PARSING_ERROR, msgptr, NULL, error_info.pei_message ?: error_info.pei_errcode, fd_msg_pmdl_get(msgptr)); CHECK_FCT( return_error( &msgptr, error_info.pei_errcode, error_info.pei_message, error_info.pei_avp) ); + if (error_info.pei_avp_free) { fd_msg_free(error_info.pei_avp); } return 0; } else { fd_hook_call(HOOK_MESSAGE_PARSING_ERROR, msgptr, NULL, "Unspecified error while parsing User-Name AVP", fd_msg_pmdl_get(msgptr)); @@ -673,6 +676,7 @@ if (error_info.pei_errcode) { fd_hook_call(HOOK_MESSAGE_PARSING_ERROR, msgptr, NULL, error_info.pei_message ?: error_info.pei_errcode, fd_msg_pmdl_get(msgptr)); CHECK_FCT( return_error( &msgptr, error_info.pei_errcode, error_info.pei_message, error_info.pei_avp) ); + if (error_info.pei_avp_free) { fd_msg_free(error_info.pei_avp); } return 0; } else { fd_hook_call(HOOK_MESSAGE_PARSING_ERROR, msgptr, NULL, "Unspecified error while parsing Route-Record AVP", fd_msg_pmdl_get(msgptr)); @@ -931,6 +935,7 @@ { if (error_info.pei_errcode) { CHECK_FCT( return_error( &msgptr, error_info.pei_errcode, error_info.pei_message, error_info.pei_avp) ); + if (error_info.pei_avp_free) { fd_msg_free(error_info.pei_avp); } return 0; } else { return ret;