|
@@ -114,6 +114,9 @@
|
|
#include "../../data_lump.h"
|
|
#include "../../data_lump.h"
|
|
#include "../../data_lump_rpl.h"
|
|
#include "../../data_lump_rpl.h"
|
|
#include "../../usr_avp.h"
|
|
#include "../../usr_avp.h"
|
|
|
|
+#ifdef WITH_XAVP
|
|
|
|
+#include "../../xavp.h"
|
|
|
|
+#endif
|
|
#include "../../atomic_ops.h" /* membar_write() */
|
|
#include "../../atomic_ops.h" /* membar_write() */
|
|
#include "../../compiler_opt.h"
|
|
#include "../../compiler_opt.h"
|
|
#ifdef USE_DST_BLACKLIST
|
|
#ifdef USE_DST_BLACKLIST
|
|
@@ -688,6 +691,9 @@ void faked_env( struct cell *t, struct sip_msg *msg)
|
|
static avp_list_t* backup_user_from, *backup_user_to;
|
|
static avp_list_t* backup_user_from, *backup_user_to;
|
|
static avp_list_t* backup_domain_from, *backup_domain_to;
|
|
static avp_list_t* backup_domain_from, *backup_domain_to;
|
|
static avp_list_t* backup_uri_from, *backup_uri_to;
|
|
static avp_list_t* backup_uri_from, *backup_uri_to;
|
|
|
|
+#ifdef WITH_XAVP
|
|
|
|
+ static sr_xavp_t **backup_xavps;
|
|
|
|
+#endif
|
|
static struct socket_info* backup_si;
|
|
static struct socket_info* backup_si;
|
|
|
|
|
|
if (msg) {
|
|
if (msg) {
|
|
@@ -718,6 +724,9 @@ void faked_env( struct cell *t, struct sip_msg *msg)
|
|
backup_user_to = set_avp_list(AVP_TRACK_TO | AVP_CLASS_USER, &t->user_avps_to );
|
|
backup_user_to = set_avp_list(AVP_TRACK_TO | AVP_CLASS_USER, &t->user_avps_to );
|
|
backup_domain_from = set_avp_list(AVP_TRACK_FROM | AVP_CLASS_DOMAIN, &t->domain_avps_from );
|
|
backup_domain_from = set_avp_list(AVP_TRACK_FROM | AVP_CLASS_DOMAIN, &t->domain_avps_from );
|
|
backup_domain_to = set_avp_list(AVP_TRACK_TO | AVP_CLASS_DOMAIN, &t->domain_avps_to );
|
|
backup_domain_to = set_avp_list(AVP_TRACK_TO | AVP_CLASS_DOMAIN, &t->domain_avps_to );
|
|
|
|
+#ifdef WITH_XAVP
|
|
|
|
+ backup_xavps = xavp_set_list(&t->xavps_list);
|
|
|
|
+#endif
|
|
/* set default send address to the saved value */
|
|
/* set default send address to the saved value */
|
|
backup_si=bind_address;
|
|
backup_si=bind_address;
|
|
bind_address=t->uac[0].request.dst.send_sock;
|
|
bind_address=t->uac[0].request.dst.send_sock;
|
|
@@ -733,6 +742,9 @@ void faked_env( struct cell *t, struct sip_msg *msg)
|
|
set_avp_list(AVP_TRACK_TO | AVP_CLASS_DOMAIN, backup_domain_to );
|
|
set_avp_list(AVP_TRACK_TO | AVP_CLASS_DOMAIN, backup_domain_to );
|
|
set_avp_list(AVP_TRACK_FROM | AVP_CLASS_URI, backup_uri_from );
|
|
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_TO | AVP_CLASS_URI, backup_uri_to );
|
|
|
|
+#ifdef WITH_XAVP
|
|
|
|
+ xavp_set_list(backup_xavps);
|
|
|
|
+#endif
|
|
bind_address=backup_si;
|
|
bind_address=backup_si;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1834,6 +1846,9 @@ int reply_received( struct sip_msg *p_msg )
|
|
avp_list_t* backup_user_from, *backup_user_to;
|
|
avp_list_t* backup_user_from, *backup_user_to;
|
|
avp_list_t* backup_domain_from, *backup_domain_to;
|
|
avp_list_t* backup_domain_from, *backup_domain_to;
|
|
avp_list_t* backup_uri_from, *backup_uri_to;
|
|
avp_list_t* backup_uri_from, *backup_uri_to;
|
|
|
|
+#ifdef WITH_XAVP
|
|
|
|
+ sr_xavp_t **backup_xavps;
|
|
|
|
+#endif
|
|
#ifdef USE_DNS_FAILOVER
|
|
#ifdef USE_DNS_FAILOVER
|
|
int branch_ret;
|
|
int branch_ret;
|
|
int prev_branch;
|
|
int prev_branch;
|
|
@@ -1981,6 +1996,9 @@ int reply_received( struct sip_msg *p_msg )
|
|
backup_user_to = set_avp_list(AVP_TRACK_TO | AVP_CLASS_USER, &t->user_avps_to );
|
|
backup_user_to = set_avp_list(AVP_TRACK_TO | AVP_CLASS_USER, &t->user_avps_to );
|
|
backup_domain_from = set_avp_list(AVP_TRACK_FROM | AVP_CLASS_DOMAIN, &t->domain_avps_from );
|
|
backup_domain_from = set_avp_list(AVP_TRACK_FROM | AVP_CLASS_DOMAIN, &t->domain_avps_from );
|
|
backup_domain_to = set_avp_list(AVP_TRACK_TO | AVP_CLASS_DOMAIN, &t->domain_avps_to );
|
|
backup_domain_to = set_avp_list(AVP_TRACK_TO | AVP_CLASS_DOMAIN, &t->domain_avps_to );
|
|
|
|
+#ifdef WITH_XAVP
|
|
|
|
+ backup_xavps = xavp_set_list(&t->xavps_list);
|
|
|
|
+#endif
|
|
setbflagsval(0, uac->branch_flags);
|
|
setbflagsval(0, uac->branch_flags);
|
|
/* Pre- and post-script callbacks have already
|
|
/* Pre- and post-script callbacks have already
|
|
* been executed by the core. (Miklos)
|
|
* been executed by the core. (Miklos)
|
|
@@ -2000,6 +2018,9 @@ int reply_received( struct sip_msg *p_msg )
|
|
set_avp_list( AVP_TRACK_TO | AVP_CLASS_USER, backup_user_to );
|
|
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_FROM | AVP_CLASS_DOMAIN, backup_domain_from );
|
|
set_avp_list( AVP_TRACK_TO | AVP_CLASS_DOMAIN, backup_domain_to );
|
|
set_avp_list( AVP_TRACK_TO | AVP_CLASS_DOMAIN, backup_domain_to );
|
|
|
|
+#ifdef WITH_XAVP
|
|
|
|
+ xavp_set_list(backup_xavps);
|
|
|
|
+#endif
|
|
}
|
|
}
|
|
#ifdef USE_DST_BLACKLIST
|
|
#ifdef USE_DST_BLACKLIST
|
|
/* add temporary to the blacklist the source of a 503 reply */
|
|
/* add temporary to the blacklist the source of a 503 reply */
|