[asterisk-commits] res pjsip session: Do not call session supplements when it's... (asterisk[certified/13.8])
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Nov 10 05:44:51 CST 2016
Joshua Colp has submitted this change and it was merged. ( https://gerrit.asterisk.org/4355 )
Change subject: res_pjsip_session: Do not call session supplements when it's too late.
......................................................................
res_pjsip_session: Do not call session supplements when it's too late.
res_pjsip_sesssion was hooking into transaction and invite state
changes. One of the reasons for doing so was due to the
PJSIP_EVENT_TX_MSG event. The idea was that we were hooking into the
message sending process, and so we should call session supplements to
alter the outgoing message.
In reality, this event was meant to indicate that the message either
a) had already been sent, or
b) required a DNS lookup and would be sent when the DNS query
completed.
In case (a), this meant we were altering an already-sent
request/response for no reason. In case (b), this potentially meant we
could be trying to alter a request/response at the same time that the
DNS resolution completed. In this case, it meant we might be stomping on
memory being used by the thread actually sending the message. This
caused potential crashes and memory corruption.
This patch removes the calls to session supplements from the case where
the PJSIP_EVENT_TX_MSG event occurs. In all of these cases, trying to
alter the message at this point is too late, and it can cause nothing
but harm to try to do it. Because there were no longer any calls to the
handle_outgoing() function, it has been removed.
Change-Id: Ibcc223fb1c3a237927f38754e0429e80ee301e92
(cherry picked from commit e043d1a55cf356066b3b39ebac8b4bbb612ce807)
---
M res/res_pjsip_session.c
1 file changed, 0 insertions(+), 15 deletions(-)
Approvals:
George Joseph: Looks good to me, approved
Anonymous Coward #1000019: Verified
diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c
index c04d019..4425ec8 100644
--- a/res/res_pjsip_session.c
+++ b/res/res_pjsip_session.c
@@ -60,7 +60,6 @@
enum ast_sip_session_response_priority response_priority);
static void handle_outgoing_request(struct ast_sip_session *session, pjsip_tx_data *tdata);
static void handle_outgoing_response(struct ast_sip_session *session, pjsip_tx_data *tdata);
-static void handle_outgoing(struct ast_sip_session *session, pjsip_tx_data *tdata);
/*! \brief NAT hook for modifying outgoing messages with SDP */
static struct ast_sip_nat_hook *nat_hook;
@@ -2436,17 +2435,6 @@
}
}
-static void handle_outgoing(struct ast_sip_session *session, pjsip_tx_data *tdata)
-{
- ast_debug(3, "Sending %s\n", tdata->msg->type == PJSIP_REQUEST_MSG ?
- "request" : "response");
- if (tdata->msg->type == PJSIP_REQUEST_MSG) {
- handle_outgoing_request(session, tdata);
- } else {
- handle_outgoing_response(session, tdata);
- }
-}
-
static void session_end(struct ast_sip_session *session)
{
struct ast_sip_session_supplement *iter;
@@ -2502,7 +2490,6 @@
switch(type) {
case PJSIP_EVENT_TX_MSG:
- handle_outgoing(session, e->body.tx_msg.tdata);
break;
case PJSIP_EVENT_RX_MSG:
handle_incoming(session, e->body.rx_msg.rdata, type,
@@ -2513,7 +2500,6 @@
/* Transaction state changes are prompted by some other underlying event. */
switch(e->body.tsx_state.type) {
case PJSIP_EVENT_TX_MSG:
- handle_outgoing(session, e->body.tsx_state.src.tdata);
break;
case PJSIP_EVENT_RX_MSG:
handle_incoming(session, e->body.tsx_state.src.rdata, type,
@@ -2559,7 +2545,6 @@
}
switch (e->body.tsx_state.type) {
case PJSIP_EVENT_TX_MSG:
- handle_outgoing(session, e->body.tsx_state.src.tdata);
/* When we create an outgoing request, we do not have access to the transaction that
* is created. Instead, We have to place transaction-specific data in the tdata. Here,
* we transfer the data into the transaction. This way, when we receive a response, we
--
To view, visit https://gerrit.asterisk.org/4355
To unsubscribe, visit https://gerrit.asterisk.org/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ibcc223fb1c3a237927f38754e0429e80ee301e92
Gerrit-PatchSet: 1
Gerrit-Project: asterisk
Gerrit-Branch: certified/13.8
Gerrit-Owner: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: Anonymous Coward #1000019
Gerrit-Reviewer: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Mark Michelson <mmichelson at digium.com>
More information about the asterisk-commits
mailing list