Module: kamailio
Branch: master
Commit: 4df92312166d8aad700007ef0898d0a7c6ba40b7
URL:
https://github.com/kamailio/kamailio/commit/4df92312166d8aad700007ef0898d0a…
Author: Xenofon Karamanos <xk(a)gilawa.com>
Committer: Henning Westerholt <hw(a)gilawa.com>
Date: 2024-01-08T15:55:43+01:00
parser/contact: Change addition order to the end of list
- Contacts are now added at the end of the list.
- hfl(Contact)[index] is now returning in the correct order.
---
Modified: src/core/parser/contact/contact.c
---
Diff:
https://github.com/kamailio/kamailio/commit/4df92312166d8aad700007ef0898d0a…
Patch:
https://github.com/kamailio/kamailio/commit/4df92312166d8aad700007ef0898d0a…
---
diff --git a/src/core/parser/contact/contact.c b/src/core/parser/contact/contact.c
index 3c66a2082b0..dd522a6cd3c 100644
--- a/src/core/parser/contact/contact.c
+++ b/src/core/parser/contact/contact.c
@@ -208,6 +208,18 @@ static inline int skip_name(str *_s)
return -1;
}
+static inline void contact_append(contact_t **head, contact_t *node)
+{
+ contact_t *ptr = *head;
+ if(*head == NULL) {
+ *head = node;
+ return;
+ }
+ while(ptr->next != NULL) {
+ ptr = ptr->next;
+ }
+ ptr->next = node;
+}
/*
* Parse contacts in a Contact HF
@@ -298,8 +310,7 @@ int parse_contacts(str *_s, contact_t **_c)
_s->len--;
trim_leading(_s);
- c->next = *_c;
- *_c = c;
+ contact_append(_c, c);
c = NULL;
if(_s->len == 0) {
@@ -318,8 +329,8 @@ int parse_contacts(str *_s, contact_t **_c)
ok:
c->len = _s->s - c->name.s;
- c->next = *_c;
- *_c = c;
+ contact_append(_c, c);
+ c = NULL;
return 0;
}