Browse Source

tm: local req. route: do not save/restore the avps

- reset_avps() moved after running the local req. route so at
  least there is a chance that some avps could be used (although
   it's unclear what non-global  avps could have made it so far
   so it's probably safer to say that in general no defined avps
   should be expected).
- no need to save or restore the avps after running the local req.
  route (they are reset anyway).
Andrei Pelinescu-Onciul 16 năm trước cách đây
mục cha
commit
fa699018d3
1 tập tin đã thay đổi với 6 bổ sung28 xóa
  1. 6 28
      modules/tm/uac.c

+ 6 - 28
modules/tm/uac.c

@@ -210,9 +210,6 @@ static inline int t_uac_prepare(uac_req_t *uac_r,
 	int buf_len1;
 	int sflag_bk;
 	int backup_route_type;
-	avp_list_t* backup_user_from, *backup_user_to;
-	avp_list_t* backup_domain_from, *backup_domain_to;
-	avp_list_t* backup_uri_from, *backup_uri_to;
 #endif
 
 	ret=-1;
@@ -300,10 +297,6 @@ static inline int t_uac_prepare(uac_req_t *uac_r,
 	new_cell->rt_t2_timeout=cfg_get(tm, tm_cfg, rt_t2_timeout);
 #endif
 
-	/* better reset avp list now - anyhow, it's useless from
-	 * this point (bogdan) */
-	reset_avps();
-
 	set_kr(REQ_FWDED);
 
 	request = &new_cell->uac[0].request;
@@ -349,20 +342,8 @@ static inline int t_uac_prepare(uac_req_t *uac_r,
 			#ifdef USE_COMP
 				lreq.rcv.comp=dst.comp;
 			#endif /* USE_COMP */
-				/* backup environment (e.g., AVP lists, ...) */
-				backup_uri_from = set_avp_list(AVP_TRACK_FROM | AVP_CLASS_URI,
-					&new_cell->uri_avps_from);
-				backup_uri_to = set_avp_list(AVP_TRACK_TO | AVP_CLASS_URI,
-					&new_cell->uri_avps_to);
-				backup_user_from = set_avp_list(AVP_TRACK_FROM | AVP_CLASS_USER,
-					&new_cell->user_avps_from);
-				backup_user_to = set_avp_list(AVP_TRACK_TO | AVP_CLASS_USER,
-					&new_cell->user_avps_to);
-				backup_domain_from = set_avp_list(
-					AVP_TRACK_FROM | AVP_CLASS_DOMAIN,
-					&new_cell->domain_avps_from);
-				backup_domain_to = set_avp_list(AVP_TRACK_TO | AVP_CLASS_DOMAIN,
-					&new_cell->domain_avps_to);
+				/* AVPs are reset anyway afterwards, so no need to 
+				   backup/restore them*/
 				sflag_bk = getsflags();
 
 				/* run the route */
@@ -372,13 +353,6 @@ static inline int t_uac_prepare(uac_req_t *uac_r,
 				set_route_type( backup_route_type );
 
 				/* restore original environment */
-				set_avp_list(AVP_TRACK_FROM | AVP_CLASS_URI, backup_uri_from);
-				set_avp_list(AVP_TRACK_TO | AVP_CLASS_URI, backup_uri_to);
-				set_avp_list(AVP_TRACK_FROM | AVP_CLASS_USER, backup_user_from);
-				set_avp_list(AVP_TRACK_TO | AVP_CLASS_USER, backup_user_to);
-				set_avp_list(AVP_TRACK_FROM | AVP_CLASS_DOMAIN,
-						backup_domain_from);
-				set_avp_list(AVP_TRACK_TO | AVP_CLASS_DOMAIN, backup_domain_to);
 				setsflagsval(sflag_bk);
 
 				if (unlikely(lreq.new_uri.s))
@@ -414,6 +388,10 @@ static inline int t_uac_prepare(uac_req_t *uac_r,
 	}
 #endif
 
+	/* better reset avp list now - anyhow, it's useless from
+	 * this point (bogdan) */
+	reset_avps();
+
 	new_cell->method.s = buf;
 	new_cell->method.len = uac_r->method->len;