Browse Source

tm: enforce AVP_TRACK_TO only for ser-style timer AVPs

- ser used the list of AVPs from track To for geting timer values
- kamailio is using mainly track From for AVPs
- for compatibility reasons, if avp name is given in ser style, enforce
  AVPs track To, otherwise use default track (From) if none is specified
- reported by Min Wang
Daniel-Constantin Mierla 14 năm trước cách đây
mục cha
commit
26f757d0c3
1 tập tin đã thay đổi với 5 bổ sung1 xóa
  1. 5 1
      modules/tm/t_funcs.c

+ 5 - 1
modules/tm/t_funcs.c

@@ -431,6 +431,8 @@ int init_avp_params(char *fr_timer_param, char *fr_inv_timer_param,
 					"AVP specs \"%s\"\n", fr_timer_param);
 					"AVP specs \"%s\"\n", fr_timer_param);
 				return -1;
 				return -1;
 			}
 			}
+			/* ser flavour uses the To track of AVPs */
+			fr_timer_avp_type |= AVP_TRACK_TO;
 		}
 		}
 	}
 	}
 
 
@@ -462,6 +464,8 @@ int init_avp_params(char *fr_timer_param, char *fr_inv_timer_param,
 					"AVP specs \"%s\"\n", fr_inv_timer_param);
 					"AVP specs \"%s\"\n", fr_inv_timer_param);
 				return -1;
 				return -1;
 			}
 			}
+			/* ser flavour uses the To track of AVPs */
+			fr_inv_timer_avp_type |= AVP_TRACK_TO;
 		}
 		}
 	}
 	}
 
 
@@ -507,7 +511,7 @@ static inline int avp2timer(unsigned int* timer, int type, int_str name)
 	int_str val_istr;
 	int_str val_istr;
 	int err;
 	int err;
 
 
-	avp = search_first_avp( type | AVP_TRACK_TO, name, &val_istr, 0);
+	avp = search_first_avp(type, name, &val_istr, 0);
 	if (!avp) {
 	if (!avp) {
 		/*
 		/*
 		 DBG("avp2timer: AVP '%.*s' not found\n", param.s->len, ZSW(param.s->s));
 		 DBG("avp2timer: AVP '%.*s' not found\n", param.s->len, ZSW(param.s->s));