From dc10ce90b29d42557f3d8c9499a320ffcc3a91c8 Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 6 Sep 2017 18:20:36 +0200 Subject: Wrap channel state assignment in macro Previously we've used function so debug print always pointed to the same place which is not very useful. Wrap it with macro so proper file:line is printed. Also, make sure that we always change state only through this wrapper and log only when the state has changed. Change-Id: I21789f8021290965b61a54a2b23177ccbbfe8321 --- src/libbsc/abis_rsl.c | 9 +++++---- src/libbsc/chan_alloc.c | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/libbsc/abis_rsl.c b/src/libbsc/abis_rsl.c index 09fb14b79..996860285 100644 --- a/src/libbsc/abis_rsl.c +++ b/src/libbsc/abis_rsl.c @@ -1225,11 +1225,12 @@ int rsl_lchan_mark_broken(struct gsm_lchan *lchan, const char *reason) return 0; } -int rsl_lchan_set_state(struct gsm_lchan *lchan, int state) +int rsl_lchan_set_state_with_log(struct gsm_lchan *lchan, enum gsm_lchan_state state, const char *file, unsigned line) { - DEBUGP(DRSL, "%s state %s -> %s\n", - gsm_lchan_name(lchan), gsm_lchans_name(lchan->state), - gsm_lchans_name(state)); + if (lchan->state != state) + LOGPSRC(DRSL, LOGL_DEBUG, file, line, "%s state %s -> %s\n", + gsm_lchan_name(lchan), gsm_lchans_name(lchan->state), gsm_lchans_name(state)); + lchan->state = state; return 0; } diff --git a/src/libbsc/chan_alloc.c b/src/libbsc/chan_alloc.c index 679ad4203..f0275bc96 100644 --- a/src/libbsc/chan_alloc.c +++ b/src/libbsc/chan_alloc.c @@ -448,7 +448,7 @@ void lchan_reset(struct gsm_lchan *lchan) osmo_timer_del(&lchan->error_timer); lchan->type = GSM_LCHAN_NONE; - lchan->state = LCHAN_S_NONE; + rsl_lchan_set_state(lchan, LCHAN_S_NONE); if (lchan->abis_ip.rtp_socket) { rtp_socket_free(lchan->abis_ip.rtp_socket); -- cgit v1.2.3