res_pjsip: Use correct pool for storing the contact_user value. master
authorJoshua C. Colp <jcolp@sangoma.com>
Wed, 27 May 2020 14:35:42 +0000 (11:35 -0300)
committerJoshua Colp <jcolp@sangoma.com>
Wed, 27 May 2020 14:36:45 +0000 (09:36 -0500)
When replacing the user portion of the Contact URI the code
was using the ephemeral pool instead of the tdata pool. This
could cause the Contact user value to become invalid after a
period of time.

The code will now use the tdata pool which persists for the
lifetime of the message instead.

ASTERISK-28794

Change-Id: I31e7b958e397cbdaeedd0ebb70bcf8dd2ed3c4d5

res/res_pjsip.c

index 152d9e1..659c631 100644 (file)
@@ -4038,7 +4038,7 @@ static int create_out_of_dialog_request(const pjsip_method *method, struct ast_s
                contact_hdr = pjsip_msg_find_hdr_by_names((*tdata)->msg, &HCONTACT, &HCONTACTSHORT, NULL);
                if (contact_hdr) {
                        contact_uri = pjsip_uri_get_uri(contact_hdr->uri);
-                       pj_strdup2(pool, &contact_uri->user, endpoint->contact_user);
+                       pj_strdup2((*tdata)->pool, &contact_uri->user, endpoint->contact_user);
                }
        }