diff --git a/modules/b2b_logic/b2b_logic.c b/modules/b2b_logic/b2b_logic.c index 0e644b605d..f61feb9b1a 100644 --- a/modules/b2b_logic/b2b_logic.c +++ b/modules/b2b_logic/b2b_logic.c @@ -199,6 +199,7 @@ struct b2b_ctx_val *local_ctx_vals; unsigned int ent_term_interval; struct b2b_term_timer *ent_term_timer; +int use_lifetime_of_bridge = 0; static const cmd_export_t cmds[]= { @@ -301,6 +302,7 @@ static const param_export_t params[]= {"b2bl_th_init_timeout",INT_PARAM, &b2bl_th_init_timeout }, {"b2bl_early_update",INT_PARAM, &b2b_early_update }, {"old_entity_term_delay",INT_PARAM, &ent_term_interval }, + {"use_lifetime_of_bridge",INT_PARAM, &use_lifetime_of_bridge }, {0, 0, 0 } }; diff --git a/modules/b2b_logic/bridging.c b/modules/b2b_logic/bridging.c index 30d37865ab..d75f0d45d4 100644 --- a/modules/b2b_logic/bridging.c +++ b/modules/b2b_logic/bridging.c @@ -1643,6 +1643,7 @@ int b2bl_bridge(struct sip_msg* msg, b2bl_tuple_t* tuple, if (lifetime) { + tuple->lifetime_bridge_flag = lifetime; tuple->lifetime = lifetime + get_ticks(); LM_DBG("Lifetime defined = [%d]\n", tuple->lifetime); } diff --git a/modules/b2b_logic/logic.c b/modules/b2b_logic/logic.c index 2642b2f9f6..ba7f581bb0 100644 --- a/modules/b2b_logic/logic.c +++ b/modules/b2b_logic/logic.c @@ -66,6 +66,7 @@ extern struct b2b_ctx_val *local_ctx_vals; extern int req_routeid; extern int reply_routeid; +extern int use_lifetime_of_bridge; struct b2bl_route_ctx cur_route_ctx; @@ -161,10 +162,14 @@ int b2b_add_dlginfo(str* key, str* entity_key, int src, b2b_dlginfo_t* dlginfo, return -1; } /* a connected call */ - if(max_duration) - tuple->lifetime = get_ticks() + max_duration; - else - tuple->lifetime = 0; + if (tuple->lifetime_bridge_flag && use_lifetime_of_bridge) { + tuple->lifetime = get_ticks() + tuple->lifetime_bridge_flag; + } else { + if(max_duration) + tuple->lifetime = get_ticks() + max_duration; + else + tuple->lifetime = 0; + } entity = b2bl_search_entity(tuple, entity_key, src, &ent_head); if(entity == NULL) { diff --git a/modules/b2b_logic/records.h b/modules/b2b_logic/records.h index 347efe9de5..155f52115b 100644 --- a/modules/b2b_logic/records.h +++ b/modules/b2b_logic/records.h @@ -125,6 +125,7 @@ typedef struct b2bl_tuple struct b2bl_tuple* next; struct b2bl_tuple* prev; unsigned int lifetime; + unsigned int lifetime_bridge_flag; str local_contact; int db_flag; int repl_flag; /* sent/received through entities replication */