Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 3 May 2019 08:17:41 +0000 (UTC)
From:      Guido Falsi <madpilot@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r500705 - in head/net/pjsip: . files
Message-ID:  <201905030817.x438HfKe071360@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: madpilot
Date: Fri May  3 08:17:41 2019
New Revision: 500705
URL: https://svnweb.freebsd.org/changeset/ports/500705

Log:
  - Add to pjsip a customized config_site.h file with values suggested
    by the asterisk project. This allows WebRTC to work correctly in
    asterisk out of the box [1]
  - Also import some patches to pjsip from the asterisk project. These
    patches have already been integrated in upstream pjsip development
    sources [2]
  
  Reported by:	zhenya1993lzn@yandex.ru [1]
  Obtained from:	https://github.com/asterisk/asterisk/tree/16.3/third-party/pjproject/patches [2]
  MFH:		2019Q2

Added:
  head/net/pjsip/files/config_site.h   (contents, props changed)
  head/net/pjsip/files/patch-0010-outgoing_connected_line_method_update   (contents, props changed)
  head/net/pjsip/files/patch-0020-Fixed-2172-Avoid-double-reference-counter-decrements   (contents, props changed)
Modified:
  head/net/pjsip/Makefile

Modified: head/net/pjsip/Makefile
==============================================================================
--- head/net/pjsip/Makefile	Fri May  3 08:10:22 2019	(r500704)
+++ head/net/pjsip/Makefile	Fri May  3 08:17:41 2019	(r500705)
@@ -2,6 +2,7 @@
 
 PORTNAME=	pjsip
 PORTVERSION=	2.8
+PORTREVISION=	1
 CATEGORIES=	net
 MASTER_SITES=	http://www.pjsip.org/release/${PORTVERSION}/
 DISTNAME=	pjproject-${DISTVERSION}
@@ -96,8 +97,8 @@ post-patch:
 	@${REINPLACE_CMD} -e 's/$$(APP_LDFLAGS) \{0,1\}//' \
 		-e 's/$$(OS_LDFLAGS)/$$(APP_LDFLAGS) &/' \
 		${WRKSRC}/*/build/Makefile
-	@${ECHO} "#include <sys/select.h>" > ${WRKSRC}/pjlib/include/pj/config_site.h
-	@${ECHO} "#define PJ_IOQUEUE_MAX_HANDLES (FD_SETSIZE)" >> ${WRKSRC}/pjlib/include/pj/config_site.h
+	@${CP} ${FILESDIR}/config_site.h \
+		${WRKSRC}/pjlib/include/pj/config_site.h
 
 post-install-SHARED-on:
 	${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/*.so

Added: head/net/pjsip/files/config_site.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/pjsip/files/config_site.h	Fri May  3 08:17:41 2019	(r500705)
@@ -0,0 +1,40 @@
+/*
+ * Custom options imported from asterisk provided customizations.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/select.h>
+
+#define PJ_MAX_HOSTNAME			(256)
+#define PJSIP_MAX_URL_SIZE		(512)
+#define PJ_IOQUEUE_MAX_HANDLES		(FD_SETSIZE)
+
+#define PJ_SCANNER_USE_BITWISE		0
+
+#define PJ_LOG_MAX_LEVEL		6
+
+#define PJSIP_MAX_TSX_COUNT		((64*1024)-1)
+#define PJSIP_MAX_DIALOG_COUNT		((64*1024)-1)
+#define PJSIP_UDP_SO_SNDBUF_SIZE	(512*1024)
+#define PJSIP_UDP_SO_RCVBUF_SIZE	(512*1024)
+
+#define PJSIP_MAX_PKT_LEN		32000
+
+/* Defaults too low for WebRTC */
+#define PJ_ICE_MAX_CAND			32
+#define PJ_ICE_MAX_CHECKS		(PJ_ICE_MAX_CAND * PJ_ICE_MAX_CAND)
+
+/* Increase limits to allow more formats */
+#define PJMEDIA_MAX_SDP_FMT		64
+#define PJMEDIA_MAX_SDP_BANDW		4
+#define PJMEDIA_MAX_SDP_ATTR		(PJMEDIA_MAX_SDP_FMT*2 + 4)
+#define PJMEDIA_MAX_SDP_MEDIA		16
+
+/*
+ * Turn off the periodic sending of CRLNCRLN.  Default is on (90 seconds),
+ * which conflicts with the global section's keep_alive_interval option in
+ * pjsip.conf in asterisk.
+ */
+#define PJSIP_TCP_KEEP_ALIVE_INTERVAL	0
+#define PJSIP_TLS_KEEP_ALIVE_INTERVAL	0

Added: head/net/pjsip/files/patch-0010-outgoing_connected_line_method_update
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/pjsip/files/patch-0010-outgoing_connected_line_method_update	Fri May  3 08:17:41 2019	(r500705)
@@ -0,0 +1,33 @@
+diff --git a/pjsip/src/pjsip-ua/sip_inv.c b/pjsip/src/pjsip-ua/sip_inv.c
+--- pjsip/src/pjsip-ua/sip_inv.c
++++ pjsip/src/pjsip-ua/sip_inv.c
+@@ -4185,6 +4185,29 @@
+ 
+ 	    if (tsx->status_code != 100) {
+ 
++		if (inv->role == PJSIP_ROLE_UAC) {
++		    pjsip_rx_data *rdata = e->body.tsx_state.src.rdata;
++		    pjsip_allow_hdr *allow = NULL;
++		    pjsip_msg *msg = rdata->msg_info.msg;
++
++		    if (msg) {
++			allow = (pjsip_allow_hdr*) pjsip_msg_find_hdr(msg, PJSIP_H_ALLOW,
++				NULL);
++		    }
++		    if (allow) {
++			unsigned i;
++			const pj_str_t STR_UPDATE = { "UPDATE", 6 };
++
++			for (i=0; i<allow->count; ++i) {
++			    if (pj_stricmp(&allow->values[i], &STR_UPDATE)==0) {
++				/* UPDATE is present in Allow */
++				inv->options |= PJSIP_INV_SUPPORT_UPDATE;
++				break;
++			    }
++			}
++		    }
++		}
++
+ 		if (dlg->remote.info->tag.slen)
+ 		    inv_set_state(inv, PJSIP_INV_STATE_EARLY, e);
+ 

Added: head/net/pjsip/files/patch-0020-Fixed-2172-Avoid-double-reference-counter-decrements
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/pjsip/files/patch-0020-Fixed-2172-Avoid-double-reference-counter-decrements	Fri May  3 08:17:41 2019	(r500705)
@@ -0,0 +1,42 @@
+From 1fed39fe1488abd654a5488b5e6ad59b4b973331 Mon Sep 17 00:00:00 2001
+From: nanang <nanang@localhost>
+Date: Tue, 8 Jan 2019 09:07:47 +0000
+Subject: [PATCH 1/5] Fixed #2172: Avoid double reference counter decrements in
+ timer in the scenario of race condition between pj_timer_heap_cancel() and
+ pj_timer_heap_poll().
+
+---
+ pjlib/src/pj/timer.c | 17 ++++++++++-------
+ 1 file changed, 10 insertions(+), 7 deletions(-)
+
+diff --git a/pjlib/src/pj/timer.c b/pjlib/src/pj/timer.c
+index 90a95e37b..7bae084ef 100644
+--- pjlib/src/pj/timer.c
++++ pjlib/src/pj/timer.c
+@@ -580,13 +580,16 @@ static int cancel_timer(pj_timer_heap_t *ht,
+ 
+     lock_timer_heap(ht);
+     count = cancel(ht, entry, flags | F_DONT_CALL);
+-    if (flags & F_SET_ID) {
+-	entry->id = id_val;
+-    }
+-    if (entry->_grp_lock) {
+-	pj_grp_lock_t *grp_lock = entry->_grp_lock;
+-	entry->_grp_lock = NULL;
+-	pj_grp_lock_dec_ref(grp_lock);
++    if (count > 0) {
++	/* Timer entry found & cancelled */
++	if (flags & F_SET_ID) {
++	    entry->id = id_val;
++	}
++	if (entry->_grp_lock) {
++	    pj_grp_lock_t *grp_lock = entry->_grp_lock;
++	    entry->_grp_lock = NULL;
++	    pj_grp_lock_dec_ref(grp_lock);
++	}
+     }
+     unlock_timer_heap(ht);
+ 
+-- 
+2.20.1
+



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201905030817.x438HfKe071360>