mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-24 14:56:58 +00:00
pjproject_bundled: Add 3 upstream patches
0035-r5572-svn-backport-dialog-transaction-deadlock.patch 0036-r5573-svn-backport-ua-pjsua-transaction-deadlock.patch 0037-r5576-svn-backport-session-timer-crash.patch Also removed the progress bar from wget download to stdout. ASTERISK-26905 #close Reported-by: Ross Beer Change-Id: I268fb3cf71a3bb24283ff0d24bd8b03239d81256
This commit is contained in:
72
third-party/pjproject/patches/0037-r5576-svn-backport-session-timer-crash.patch
vendored
Normal file
72
third-party/pjproject/patches/0037-r5576-svn-backport-session-timer-crash.patch
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
Index: pjproject/trunk/pjsip/src/pjsip-ua/sip_timer.c
|
||||
===================================================================
|
||||
--- a/pjsip/src/pjsip-ua/sip_timer.c (revision 5557)
|
||||
+++ b/pjsip/src/pjsip-ua/sip_timer.c (revision 5576)
|
||||
@@ -333,6 +333,8 @@
|
||||
pjsip_tx_data *tdata = NULL;
|
||||
pj_status_t status;
|
||||
pj_bool_t as_refresher;
|
||||
+ int entry_id;
|
||||
+ char obj_name[PJ_MAX_OBJ_NAME];
|
||||
|
||||
pj_assert(inv);
|
||||
|
||||
@@ -344,7 +346,10 @@
|
||||
/* Check our role */
|
||||
as_refresher =
|
||||
(inv->timer->refresher == TR_UAC && inv->timer->role == PJSIP_ROLE_UAC) ||
|
||||
- (inv->timer->refresher == TR_UAS && inv->timer->role == PJSIP_ROLE_UAS);
|
||||
+ (inv->timer->refresher == TR_UAS && inv->timer->role == PJSIP_ROLE_UAS);
|
||||
+
|
||||
+ entry_id = entry->id;
|
||||
+ pj_ansi_strncpy(obj_name, inv->pool->obj_name, PJ_MAX_OBJ_NAME);
|
||||
|
||||
/* Do action based on role(refresher or refreshee).
|
||||
* As refresher:
|
||||
@@ -353,7 +358,7 @@
|
||||
* As refreshee:
|
||||
* - end session if there is no refresh request received.
|
||||
*/
|
||||
- if (as_refresher && (entry->id != REFRESHER_EXPIRE_TIMER_ID)) {
|
||||
+ if (as_refresher && (entry_id != REFRESHER_EXPIRE_TIMER_ID)) {
|
||||
pj_time_val now;
|
||||
|
||||
/* As refresher, reshedule the refresh request on the following:
|
||||
@@ -414,7 +419,7 @@
|
||||
}
|
||||
|
||||
pj_gettimeofday(&now);
|
||||
- PJ_LOG(4, (inv->pool->obj_name,
|
||||
+ PJ_LOG(4, (obj_name,
|
||||
"Refreshing session after %ds (expiration period=%ds)",
|
||||
(now.sec-inv->timer->last_refresh.sec),
|
||||
inv->timer->setting.sess_expires));
|
||||
@@ -432,7 +437,7 @@
|
||||
NULL, &tdata);
|
||||
|
||||
pj_gettimeofday(&now);
|
||||
- PJ_LOG(3, (inv->pool->obj_name,
|
||||
+ PJ_LOG(3, (obj_name,
|
||||
"No session %s received after %ds "
|
||||
"(expiration period=%ds), stopping session now!",
|
||||
(as_refresher?"refresh response":"refresh"),
|
||||
@@ -451,11 +456,16 @@
|
||||
status = pjsip_inv_send_msg(inv, tdata);
|
||||
}
|
||||
|
||||
+ /*
|
||||
+ * At this point, dialog might have already been destroyed,
|
||||
+ * including its pool used by the invite session.
|
||||
+ */
|
||||
+
|
||||
/* Print error message, if any */
|
||||
if (status != PJ_SUCCESS) {
|
||||
- PJ_PERROR(2, (inv->pool->obj_name, status,
|
||||
+ PJ_PERROR(2, (obj_name, status,
|
||||
"Error in %s session timer",
|
||||
- ((as_refresher && entry->id != REFRESHER_EXPIRE_TIMER_ID)?
|
||||
+ ((as_refresher && entry_id != REFRESHER_EXPIRE_TIMER_ID)?
|
||||
"refreshing" : "terminating")));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user