From 31b4b63b407b14625531a667b67b079ff6631939 Mon Sep 17 00:00:00 2001 From: Richard Mudgett Date: Fri, 15 Oct 2010 16:39:10 +0000 Subject: [PATCH] Create two versions of call ptr verify. One gripes and one does not. git-svn-id: https://origsvn.digium.com/svn/libpri/branches/1.4@2027 2fbb986a-6c06-0410-b554-c9c1f0a7f128 --- pri_internal.h | 7 ++++--- q931.c | 40 +++++++++++++++++++++++++++++----------- 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/pri_internal.h b/pri_internal.h index 84f5a27..1123d24 100644 --- a/pri_internal.h +++ b/pri_internal.h @@ -883,7 +883,7 @@ struct d_ctrl_dummy { }; /*! - * \brief Check if the given call ptr is valid. + * \brief Check if the given call ptr is valid and gripe if not. * * \param ctrl D channel controller. * \param call Q.931 call leg. @@ -892,9 +892,10 @@ struct d_ctrl_dummy { * \retval FALSE if call ptr is invalid. */ #define pri_is_call_valid(ctrl, call) \ - q931_is_call_valid(ctrl, call, __PRETTY_FUNCTION__, __LINE__) + q931_is_call_valid_gripe(ctrl, call, __PRETTY_FUNCTION__, __LINE__) -int q931_is_call_valid(struct pri *ctrl, struct q931_call *call, const char *func_name, unsigned long func_line); +int q931_is_call_valid(struct pri *ctrl, struct q931_call *call); +int q931_is_call_valid_gripe(struct pri *ctrl, struct q931_call *call, const char *func_name, unsigned long func_line); extern int pri_schedule_event(struct pri *pri, int ms, void (*function)(void *data), void *data); diff --git a/q931.c b/q931.c index 8da2e27..98927d1 100644 --- a/q931.c +++ b/q931.c @@ -327,16 +327,13 @@ static int q931_encode_channel(const q931_call *call) * * \param ctrl D channel controller. * \param call Q.931 call leg. - * \param func_name Calling function name for debug tracing. (__PRETTY_FUNCTION__) - * \param func_line Calling function line number for debug tracing. (__LINE__) * * \retval TRUE if call ptr is valid. * \retval FALSE if call ptr is invalid. */ -int q931_is_call_valid(struct pri *ctrl, struct q931_call *call, const char *func_name, unsigned long func_line) +int q931_is_call_valid(struct pri *ctrl, struct q931_call *call) { struct q931_call *cur; - struct pri *gripe; struct pri *link; int idx; @@ -347,18 +344,14 @@ int q931_is_call_valid(struct pri *ctrl, struct q931_call *call, const char *fun if (!ctrl) { /* Must use suspect ctrl from call ptr. */ if (!call->pri) { - pri_message(NULL, - "!! %s() line:%lu Called with invalid call ptr (%p) (No ctrl)\n", - func_name, func_line, call); + /* Definitely a bad call pointer. */ return 0; } /* Find the master - He has the call pool */ ctrl = PRI_MASTER(call->pri); - gripe = NULL; } else { /* Find the master - He has the call pool */ ctrl = PRI_MASTER(ctrl); - gripe = ctrl; } /* Check real call records. */ @@ -387,11 +380,36 @@ int q931_is_call_valid(struct pri *ctrl, struct q931_call *call, const char *fun } /* Well it looks like this is a stale call ptr. */ - pri_message(gripe, "!! %s() line:%lu Called with invalid call ptr (%p)\n", - func_name, func_line, call); return 0; } +/*! + * \brief Check if the given call ptr is valid and gripe if not. + * + * \param ctrl D channel controller. + * \param call Q.931 call leg. + * \param func_name Calling function name for debug tracing. (__PRETTY_FUNCTION__) + * \param func_line Calling function line number for debug tracing. (__LINE__) + * + * \retval TRUE if call ptr is valid. + * \retval FALSE if call ptr is invalid. + */ +int q931_is_call_valid_gripe(struct pri *ctrl, struct q931_call *call, const char *func_name, unsigned long func_line) +{ + int res; + + if (!call) { + /* Let's not gripe about this invalid call pointer. */ + return 0; + } + res = q931_is_call_valid(ctrl, call); + if (!res) { + pri_message(ctrl, "!! %s() line:%lu Called with invalid call ptr (%p)\n", + func_name, func_line, call); + } + return res; +} + /*! * \brief Initialize the given struct q931_party_name *