mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-19 16:20:37 +00:00
Only clear route if we have a new one
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2832 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -3699,12 +3699,9 @@ static void build_route(struct sip_pvt *p, struct sip_request *req, int backward
|
|||||||
struct sip_route *thishop, *head, *tail;
|
struct sip_route *thishop, *head, *tail;
|
||||||
int start = 0;
|
int start = 0;
|
||||||
int len;
|
int len;
|
||||||
|
int firstpass = 1;
|
||||||
char *rr, *contact, *c;
|
char *rr, *contact, *c;
|
||||||
|
|
||||||
if (p->route) {
|
|
||||||
free_old_route(p->route);
|
|
||||||
p->route = NULL;
|
|
||||||
}
|
|
||||||
/* We build up head, then assign it to p->route when we're done */
|
/* We build up head, then assign it to p->route when we're done */
|
||||||
head = NULL; tail = head;
|
head = NULL; tail = head;
|
||||||
/* 1st we pass through all the hops in any Record-Route headers */
|
/* 1st we pass through all the hops in any Record-Route headers */
|
||||||
@@ -3712,6 +3709,13 @@ static void build_route(struct sip_pvt *p, struct sip_request *req, int backward
|
|||||||
/* Each Record-Route header */
|
/* Each Record-Route header */
|
||||||
rr = __get_header(req, "Record-Route", &start);
|
rr = __get_header(req, "Record-Route", &start);
|
||||||
if (*rr == '\0') break;
|
if (*rr == '\0') break;
|
||||||
|
if (firstpass) {
|
||||||
|
if (p->route) {
|
||||||
|
free_old_route(p->route);
|
||||||
|
p->route = NULL;
|
||||||
|
}
|
||||||
|
firstpass = 0;
|
||||||
|
}
|
||||||
for (;;) {
|
for (;;) {
|
||||||
/* Each route entry */
|
/* Each route entry */
|
||||||
/* Find < */
|
/* Find < */
|
||||||
|
|||||||
Reference in New Issue
Block a user