summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2016-06-22 18:02:59 -0500
committerRichard Mudgett <rmudgett@digium.com>2016-06-30 12:09:10 -0500
commit28928ba5c4f92d407e9f161ebc5a1441261a2de0 (patch)
tree8de89399a7f86a11e4498ce32d6195dcfbe6d0e6
parent77c49ac1a142b1665a986ed7354eb33c2279851b (diff)
res_pjsip: Add missing NULL checks when using pjsip_inv_end_session().
pjsip_inv_end_session() is documented as being able to return the passed in tdata parameter set to NULL on success. Change-Id: I09d53725c49b7183c41bfa1be3ff225f3a8d3047
-rw-r--r--channels/chan_pjsip.c6
-rw-r--r--res/res_pjsip_refer.c3
-rw-r--r--res/res_pjsip_session.c6
3 files changed, 10 insertions, 5 deletions
diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c
index 970fef496..bbccb53a9 100644
--- a/channels/chan_pjsip.c
+++ b/channels/chan_pjsip.c
@@ -1417,7 +1417,8 @@ static void transfer_redirect(struct ast_sip_session *session, const char *targe
pjsip_contact_hdr *contact;
pj_str_t tmp;
- if (pjsip_inv_end_session(session->inv_session, 302, NULL, &packet) != PJ_SUCCESS) {
+ if (pjsip_inv_end_session(session->inv_session, 302, NULL, &packet) != PJ_SUCCESS
+ || !packet) {
ast_log(LOG_WARNING, "Failed to redirect PJSIP session for channel %s\n",
ast_channel_name(session->channel));
message = AST_TRANSFER_FAILED;
@@ -2182,7 +2183,8 @@ static int chan_pjsip_incoming_request(struct ast_sip_session *session, struct p
ast_sip_session_add_datastore(session, datastore);
if (!(session->channel = chan_pjsip_new(session, AST_STATE_RING, session->exten, NULL, NULL, NULL, NULL))) {
- if (pjsip_inv_end_session(session->inv_session, 503, NULL, &packet) == PJ_SUCCESS) {
+ if (pjsip_inv_end_session(session->inv_session, 503, NULL, &packet) == PJ_SUCCESS
+ && packet) {
ast_sip_session_send_response(session, packet);
}
diff --git a/res/res_pjsip_refer.c b/res/res_pjsip_refer.c
index f3af65c3c..e5bb90e5c 100644
--- a/res/res_pjsip_refer.c
+++ b/res/res_pjsip_refer.c
@@ -969,7 +969,8 @@ inv_replace_failed:
session->defer_terminate = 1;
ast_hangup(session->channel);
- if (pjsip_inv_end_session(session->inv_session, response, NULL, &packet) == PJ_SUCCESS) {
+ if (pjsip_inv_end_session(session->inv_session, response, NULL, &packet) == PJ_SUCCESS
+ && packet) {
ast_sip_session_send_response(session, packet);
}
} else {
diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c
index 23d2f2f2a..5bbd0c01b 100644
--- a/res/res_pjsip_session.c
+++ b/res/res_pjsip_session.c
@@ -2619,7 +2619,8 @@ static void session_inv_on_tsx_state_changed(pjsip_inv_session *inv, pjsip_trans
}
if (tsx->status_code != 488) {
/* Other reinvite failures (except 488) result in destroying the session. */
- if (pjsip_inv_end_session(inv, 500, NULL, &tdata) == PJ_SUCCESS) {
+ if (pjsip_inv_end_session(inv, 500, NULL, &tdata) == PJ_SUCCESS
+ && tdata) {
ast_sip_session_send_request(session, tdata);
}
}
@@ -2632,7 +2633,8 @@ static void session_inv_on_tsx_state_changed(pjsip_inv_session *inv, pjsip_trans
* a cancelled call. Our role is to immediately send a BYE to end the
* dialog.
*/
- if (pjsip_inv_end_session(inv, 500, NULL, &tdata) == PJ_SUCCESS) {
+ if (pjsip_inv_end_session(inv, 500, NULL, &tdata) == PJ_SUCCESS
+ && tdata) {
ast_sip_session_send_request(session, tdata);
}
}