pjproject: add two patches from Asterisk 16.10.0
Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
This commit is contained in:
parent
fffc4678c8
commit
80d0fbd405
3 changed files with 125 additions and 1 deletions
|
@ -11,7 +11,7 @@ include $(TOPDIR)/rules.mk
|
|||
|
||||
PKG_NAME:=pjproject
|
||||
PKG_VERSION:=2.9
|
||||
PKG_RELEASE:=3
|
||||
PKG_RELEASE:=4
|
||||
|
||||
PKG_SOURCE:=pjproject-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=https://www.pjsip.org/release/$(PKG_VERSION)
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
From 8b8199180766e3eab6014feaa64ccaedcdc12816 Mon Sep 17 00:00:00 2001
|
||||
From: Ben Ford <bford@digium.com>
|
||||
Date: Mon, 23 Dec 2019 11:11:13 -0600
|
||||
Subject: [PATCH] ICE: Add callback for finding valid pair.
|
||||
|
||||
It's possible to start sending as soon as one valid pair is found during
|
||||
ICE negotiation. The reason we would want to do this is because it is
|
||||
possible for a delay to occur at the start of a call for up to 3 seconds
|
||||
until ICE negotiation has actually completed. More information can be
|
||||
found here:
|
||||
https://bugs.chromium.org/p/chromium/issues/detail?id=1024096
|
||||
|
||||
This patch adds a callback once a valid pair is found that applications
|
||||
can use to start sending to avoid this scenario. Since only one valid
|
||||
pair is needed to start media, we only trigger the callback once.
|
||||
---
|
||||
pjnath/include/pjnath/ice_session.h | 9 +++++++++
|
||||
pjnath/src/pjnath/ice_session.c | 16 ++++++++++++++++
|
||||
2 files changed, 25 insertions(+)
|
||||
|
||||
diff --git a/pjnath/include/pjnath/ice_session.h b/pjnath/include/pjnath/ice_session.h
|
||||
index 15f0d04..8971220 100644
|
||||
--- a/pjnath/include/pjnath/ice_session.h
|
||||
+++ b/pjnath/include/pjnath/ice_session.h
|
||||
@@ -468,6 +468,14 @@ typedef struct pj_ice_sess_cb
|
||||
{
|
||||
/**
|
||||
* An optional callback that will be called by the ICE session when
|
||||
+ * a valid pair has been found during ICE negotiation.
|
||||
+ *
|
||||
+ * @param ice The ICE session.
|
||||
+ */
|
||||
+ void (*on_valid_pair)(pj_ice_sess *ice);
|
||||
+
|
||||
+ /**
|
||||
+ * An optional callback that will be called by the ICE session when
|
||||
* ICE negotiation has completed, successfully or with failure.
|
||||
*
|
||||
* @param ice The ICE session.
|
||||
@@ -625,6 +633,7 @@ struct pj_ice_sess
|
||||
pj_bool_t is_nominating; /**< Nominating stage */
|
||||
pj_bool_t is_complete; /**< Complete? */
|
||||
pj_bool_t is_destroying; /**< Destroy is called */
|
||||
+ pj_bool_t valid_pair_found; /**< First pair found */
|
||||
pj_status_t ice_status; /**< Error status. */
|
||||
pj_timer_entry timer; /**< ICE timer. */
|
||||
pj_ice_sess_cb cb; /**< Callback. */
|
||||
diff --git a/pjnath/src/pjnath/ice_session.c b/pjnath/src/pjnath/ice_session.c
|
||||
index c51dba7..ed4138a 100644
|
||||
--- a/pjnath/src/pjnath/ice_session.c
|
||||
+++ b/pjnath/src/pjnath/ice_session.c
|
||||
@@ -418,6 +418,8 @@ PJ_DEF(pj_status_t) pj_ice_sess_create(pj_stun_config *stun_cfg,
|
||||
|
||||
pj_list_init(&ice->early_check);
|
||||
|
||||
+ ice->valid_pair_found = PJ_FALSE;
|
||||
+
|
||||
/* Done */
|
||||
*p_ice = ice;
|
||||
|
||||
@@ -1348,6 +1350,20 @@ static pj_bool_t on_check_complete(pj_ice_sess *ice,
|
||||
GET_CHECK_ID(&ice->clist, check),
|
||||
(check->nominated ? " and nominated" : "")));
|
||||
|
||||
+ {
|
||||
+ /* On the first valid pair, we call the callback, if present */
|
||||
+ if (ice->valid_pair_found == PJ_FALSE) {
|
||||
+ void (*on_valid_pair)(pj_ice_sess *ice);
|
||||
+
|
||||
+ ice->valid_pair_found = PJ_TRUE;
|
||||
+ on_valid_pair = ice->cb.on_valid_pair;
|
||||
+
|
||||
+ if (on_valid_pair) {
|
||||
+ (*on_valid_pair)(ice);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
}
|
||||
|
||||
/* 8.2. Updating States
|
||||
--
|
||||
2.7.4
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
From 6324760c2fb0ffeb2e29c6c0a96a33906caa8d5f Mon Sep 17 00:00:00 2001
|
||||
From: Sean Bright <sean.bright@gmail.com>
|
||||
Date: Thu, 16 Jan 2020 10:46:11 -0500
|
||||
Subject: [PATCH] sip_parser.c: Allow brackets in via parameters
|
||||
|
||||
From RFC 5118 section 4.5:
|
||||
|
||||
While it would be beneficial if the same non-terminal
|
||||
("IPv6reference") was used for both the "sent-by" and "via-received"
|
||||
production rules, there has not been a consensus in the working group
|
||||
to that effect. Thus, the best that can be suggested is that
|
||||
implementations must follow the Robustness Principle [RFC1122] and be
|
||||
liberal in accepting a "received" parameter with or without the
|
||||
delimiting "[" and "]" tokens. When sending a request,
|
||||
implementations must not put the delimiting "[" and "]" tokens.
|
||||
---
|
||||
pjsip/src/pjsip/sip_parser.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/pjsip/src/pjsip/sip_parser.c b/pjsip/src/pjsip/sip_parser.c
|
||||
index e01e672fb..4f9c7fca4 100644
|
||||
--- a/pjsip/src/pjsip/sip_parser.c
|
||||
+++ b/pjsip/src/pjsip/sip_parser.c
|
||||
@@ -384,11 +384,11 @@ static pj_status_t init_parser()
|
||||
|
||||
status = pj_cis_dup(&pconst.pjsip_VIA_PARAM_SPEC, &pconst.pjsip_TOKEN_SPEC);
|
||||
PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
|
||||
- pj_cis_add_str(&pconst.pjsip_VIA_PARAM_SPEC, ":");
|
||||
+ pj_cis_add_str(&pconst.pjsip_VIA_PARAM_SPEC, "[:]");
|
||||
|
||||
status = pj_cis_dup(&pconst.pjsip_VIA_PARAM_SPEC_ESC, &pconst.pjsip_TOKEN_SPEC_ESC);
|
||||
PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
|
||||
- pj_cis_add_str(&pconst.pjsip_VIA_PARAM_SPEC_ESC, ":");
|
||||
+ pj_cis_add_str(&pconst.pjsip_VIA_PARAM_SPEC_ESC, "[:]");
|
||||
|
||||
status = pj_cis_dup(&pconst.pjsip_HOST_SPEC, &pconst.pjsip_ALNUM_SPEC);
|
||||
PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
|
||||
--
|
||||
2.20.1
|
||||
|
Loading…
Reference in a new issue