[sr-dev] git:master: modules_k/dialog: Fix timer reset and improve timeout value logging

Timo Reimann timo.reimann at 1und1.de
Thu Jun 24 18:47:25 CEST 2010


Module: sip-router
Branch: master
Commit: 3ed5fe7f8e82b4d8792c3b468f9b426afc1d853e
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=3ed5fe7f8e82b4d8792c3b468f9b426afc1d853e

Author: Timo Reimann <timo.reimann at 1und1.de>
Committer: Timo Reimann <timo.reimann at 1und1.de>
Date:   Thu Jun 24 18:39:49 2010 +0200

modules_k/dialog: Fix timer reset and improve timeout value logging

- Fix a bug that caused dialog timeout values to be refreshed only
  when a custom timeout was provided by the user via AVP.
- Do not log failure to get timeout from AVP when in fact no AVP
  was used.
- Add missing newline character.

---

 modules_k/dialog/dlg_handlers.c |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/modules_k/dialog/dlg_handlers.c b/modules_k/dialog/dlg_handlers.c
index 3b671ab..5fd3d31 100644
--- a/modules_k/dialog/dlg_handlers.c
+++ b/modules_k/dialog/dlg_handlers.c
@@ -469,11 +469,13 @@ inline static int get_dlg_timeout(struct sip_msg *req)
 {
 	pv_value_t pv_val;
 
-	if( timeout_avp && pv_get_spec_value( req, timeout_avp, &pv_val)==0
-	&& pv_val.flags&PV_VAL_INT && pv_val.ri>0 ) {
-		return pv_val.ri;
+	if( timeout_avp ) {
+		if ( pv_get_spec_value( req, timeout_avp, &pv_val)==0 &&
+				pv_val.flags&PV_VAL_INT && pv_val.ri>0 ) {
+			return pv_val.ri;
+		}
+		LM_DBG("invalid AVP value, using default timeout\n");
 	}
-	LM_DBG("invalid AVP value, use default timeout");
 	return default_timeout;
 }
 
@@ -923,11 +925,11 @@ void dlg_onroute(struct sip_msg* req, str *route_params, void *param)
 	&& new_state==DLG_STATE_CONFIRMED) {
 		LM_DBG("sequential request successfully processed\n");
 		timeout = get_dlg_timeout(req);
-		/* update timer during sequential request? */
 		if (timeout!=default_timeout) {
 			dlg->lifetime = timeout;
-			if (update_dlg_timer( &dlg->tl, dlg->lifetime )==-1)
-				LM_ERR("failed to update dialog lifetime\n");
+		}
+		if (update_dlg_timer( &dlg->tl, dlg->lifetime )==-1) {
+			LM_ERR("failed to update dialog lifetime\n");
 		}
 		if (update_cseqs(dlg, req, dir)!=0) {
 			LM_ERR("cseqs update failed\n");




More information about the sr-dev mailing list