Преглед изворни кода

- support for from and to attributes

Jan Janak пре 20 година
родитељ
комит
8a63d2d1d7
2 измењених фајлова са 48 додато и 46 уклоњено
  1. 40 44
      id.c
  2. 8 2
      id.h

+ 40 - 44
id.c

@@ -40,18 +40,17 @@ void set_from_uid(str* uid)
 	int_str name, val;
 	avp_t* a;
 
-	a = search_first_avp(AVP_USER | AVP_NAME_STR, name, 0, &s);
+	a = search_first_avp(AVP_CLASS_USER | AVP_TRACK_FROM | AVP_NAME_STR, name, 0, &s);
 	while(a) {
 		destroy_avp(a);
 		a = search_next_avp(&s, 0);
 	}
 
-	val.s = uid;
-	add_avp(AVP_USER | AVP_NAME_STR | AVP_VAL_STR, name, val);
+	val.s = *uid;
+	add_avp(AVP_CLASS_USER | AVP_TRACK_FROM | AVP_NAME_STR | AVP_VAL_STR, name, val);
 }
 
 
-
 /*
  * Set From UID
  */
@@ -63,9 +62,9 @@ int get_from_uid(str* uid, struct sip_msg* msg)
 	static str name_s = STR_STATIC_INIT(AVP_UID);
 	int_str name, val;
 
-	name.s = &name_s;
-	if (search_first_avp(AVP_USER | AVP_NAME_STR, name, &val, 0)) {
-		*uid = *val.s;
+	name.s = name_s;
+	if (search_first_avp(AVP_CLASS_USER | AVP_TRACK_FROM | AVP_NAME_STR, name, &val, 0)) {
+		*uid = val.s;
 		return 1;
 	} else {
 		     /* Get From URI username */
@@ -88,8 +87,8 @@ int get_from_uid(str* uid, struct sip_msg* msg)
 		uid->len = puri.user.len;
 		strlower(uid);
 
-		val.s = uid;
-		add_avp(AVP_USER | AVP_NAME_STR | AVP_VAL_STR, name, val);
+		val.s = *uid;
+		add_avp(AVP_CLASS_USER | AVP_TRACK_FROM | AVP_NAME_STR | AVP_VAL_STR, name, val);
 		return 0;
 	}
 }
@@ -104,14 +103,14 @@ void set_to_uid(str* uid)
 	int_str name, val;
 	avp_t* a;
 
-	a = search_first_avp(AVP_USER | AVP_NAME_STR, name, 0, &s);
+	a = search_first_avp(AVP_CLASS_USER | AVP_TRACK_TO | AVP_NAME_STR, name, 0, &s);
 	while(a) {
 		destroy_avp(a);
 		a = search_next_avp(&s, 0);
 	}
 
-	val.s = uid;
-	add_avp(AVP_USER | AVP_NAME_STR | AVP_VAL_STR, name, val);
+	val.s = *uid;
+	add_avp(AVP_CLASS_USER | AVP_TRACK_TO | AVP_NAME_STR | AVP_VAL_STR, name, val);
 }
 
 
@@ -126,9 +125,9 @@ int get_to_uid(str* uid, struct sip_msg* msg)
 	static str name_s = STR_STATIC_INIT(AVP_UID);
 	int_str name, val;
 
-	name.s = &name_s;
-	if (search_first_avp(AVP_USER | AVP_NAME_STR, name, &val, 0)) {
-		*uid = *val.s;
+	name.s = name_s;
+	if (search_first_avp(AVP_CLASS_USER | AVP_TRACK_TO | AVP_NAME_STR, name, &val, 0)) {
+		*uid = val.s;
 		return 1;
 	} else {
 		to = get_to(msg);
@@ -146,46 +145,43 @@ int get_to_uid(str* uid, struct sip_msg* msg)
 		uid->len = puri.user.len;
 		strlower(uid);
 
-		val.s = uid;
-		add_avp(AVP_USER | AVP_NAME_STR | AVP_VAL_STR, name, val);
+		val.s = *uid;
+		add_avp(AVP_CLASS_USER | AVP_TRACK_TO | AVP_NAME_STR | AVP_VAL_STR, name, val);
 		return 0;
 	}
 }
 
 
 /*
- * Return the current domain id
+ * Return current To domain id
  */
-int get_did(str* did, struct sip_msg* msg)
+int get_to_did(str* did, struct sip_msg* msg)
 {
-	static char buf[MAX_URI_SIZE];
-	struct to_body* from;
-	struct sip_uri puri;
 	static str name_s = STR_STATIC_INIT(AVP_DID);
 	int_str name, val;
 
-	name.s = &name_s;
-	if (search_first_avp(AVP_USER | AVP_NAME_STR, name, &val, 0)) {
-		*did = *val.s;
+	name.s = name_s;
+	if (search_first_avp(AVP_CLASS_USER | AVP_TRACK_TO | AVP_NAME_STR, name, &val, 0)) {
+		*did = val.s;
 		return 1;
-	} else {
-		from = get_to(msg);
-		if (parse_uri(from->uri.s, from->uri.len, &puri) == -1) {
-			LOG(L_ERR, "get_did: Error while parsing From URI\n");
-			return -1;
-		}
-		
-		if (puri.host.len > MAX_URI_SIZE) {
-			LOG(L_ERR, "get_did: Username too long\n");
-			return -1;
-		}
-		memcpy(buf, puri.host.s, puri.host.len);
-		did->s = buf;
-		did->len = puri.host.len;
-		strlower(did);
+	} 
+	return 0;
+}
 
-		val.s = did;
-		add_avp(AVP_USER | AVP_NAME_STR | AVP_VAL_STR, name, val);
-		return 0;
-	}
+
+/*
+ * Return current To domain id
+ */
+int get_from_did(str* did, struct sip_msg* msg)
+{
+	static str name_s = STR_STATIC_INIT(AVP_DID);
+	int_str name, val;
+
+	name.s = name_s;
+	if (search_first_avp(AVP_CLASS_USER | AVP_TRACK_FROM | AVP_NAME_STR, name, &val, 0)) {
+		*did = val.s;
+		return 1;
+	} 
+	return 0;
 }
+

+ 8 - 2
id.h

@@ -58,9 +58,15 @@ int get_to_uid(str* uid, struct sip_msg* msg);
 
 
 /*
- * Return the current domain id
+ * Return current To domain id
  */
-int get_did(str* did, struct sip_msg* msg);
+int get_to_did(str* did, struct sip_msg* msg);
+
+
+/*
+ * Return current From domain id
+ */
+int get_from_did(str* did, struct sip_msg* msg);
 
 
 #endif /* _ID_H */