Преглед на файлове

tmx: added $T(ruid)

- return current branch ruid attribute
- same as $T_reply_ruid, but works also for branch route
Daniel-Constantin Mierla преди 9 години
родител
ревизия
73c29912aa
променени са 1 файла, в които са добавени 18 реда и са изтрити 0 реда
  1. 18 0
      modules/tmx/t_var.c

+ 18 - 0
modules/tmx/t_var.c

@@ -646,6 +646,11 @@ int pv_parse_t_name(pv_spec_p sp, str *in)
 				sp->pvp.pvn.u.isname.name.n = 6;
 			else goto error;
 			break;
+		case 4:
+			if(strncmp(in->s, "ruid", 4) == 0)
+				sp->pvp.pvn.u.isname.name.n = 7;
+			else goto error;
+			break;
 		case 5:
 			if(strncmp(in->s, "flags", 5) == 0)
 				sp->pvp.pvn.u.isname.name.n = 5;
@@ -773,6 +778,19 @@ int pv_get_t_branch(struct sip_msg *msg,  pv_param_t *param,
 				return pv_get_null(msg, param, res);
 			}
 			return pv_get_strval(msg, param, res, &t->uac[branch].uri);
+		case 7: /* $T_branch(ruid) */
+			switch(route_type) {
+				case BRANCH_ROUTE:
+					/* branch and branch_failure routes have their index set */
+					tcx = _tmx_tmb.tm_ctx_get();
+					if(tcx == NULL)
+						return pv_get_null(msg, param, res);
+					return pv_get_strval(msg, param, res, &t->uac[tcx->branch_index].ruid);
+				break;
+				default:
+					return pv_get_tm_reply_ruid(msg, param, res);
+			}
+
 	}
 	return 0;
 }