View | Details | Raw Unified | Return to bug 245607 | Differences between
and this patch

Collapse All | Expand All

(-)net/pjsip/Makefile (-8 / +10 lines)
Lines 1-11 Link Here
1
# $FreeBSD$
1
# $FreeBSD$
2
2
3
PORTNAME=	pjsip
3
PORTNAME=	pjsip
4
PORTVERSION=	2.9
4
DISTVERSION=	2.10
5
PORTREVISION=	4
6
CATEGORIES=	net
5
CATEGORIES=	net
7
MASTER_SITES=	http://www.pjsip.org/release/${PORTVERSION}/
8
DISTNAME=	pjproject-${DISTVERSION}
9
6
10
MAINTAINER=	madpilot@FreeBSD.org
7
MAINTAINER=	madpilot@FreeBSD.org
11
COMMENT=	Multimedia communication library written in C language
8
COMMENT=	Multimedia communication library written in C language
Lines 13-21 Link Here
13
LICENSE=	GPLv2+
10
LICENSE=	GPLv2+
14
LICENSE_FILE=	${WRKSRC}/COPYING
11
LICENSE_FILE=	${WRKSRC}/COPYING
15
12
16
LIB_DEPENDS=	libportaudio.so:audio/portaudio
13
LIB_DEPENDS=	libportaudio.so:audio/portaudio \
14
		libopus.so:audio/opus \
15
		libuuid.so:misc/e2fsprogs-libuuid \
16
		libvpx.so:multimedia/libvpx
17
17
18
USES=		gmake localbase pathfix ssl tar:bz2
18
USES=		gmake localbase pathfix ssl tar:bz2
19
USE_GITHUB=	yes
20
GH_PROJECT=	pjproject
19
USE_LDCONFIG=	yes
21
USE_LDCONFIG=	yes
20
22
21
CONFLICTS?=	pjsip-extsrtp
23
CONFLICTS?=	pjsip-extsrtp
Lines 30-36 Link Here
30
OPTIONS_DEFINE=	AMR DEBUG EXTSRTP FFMPEG G711 G722 G7221 GSM ILBC IPV6 \
32
OPTIONS_DEFINE=	AMR DEBUG EXTSRTP FFMPEG G711 G722 G7221 GSM ILBC IPV6 \
31
		L16 OPENH264 PJSUA RESAMPLE RESAMPLEDLL SAMPLERATE SDL \
33
		L16 OPENH264 PJSUA RESAMPLE RESAMPLEDLL SAMPLERATE SDL \
32
		SHARED SOUND SPEEX SPEEXAEC V4L VIDEO WEBRTC
34
		SHARED SOUND SPEEX SPEEXAEC V4L VIDEO WEBRTC
33
OPTIONS_DEFAULT=G711 G722 G7221 GSM ILBC L16 SHARED SPEEX SPEEXAEC
35
OPTIONS_DEFAULT=G711 G722 G7221 GSM ILBC L16 SHARED SPEEX SPEEXAEC VIDEO WEBRTC
34
36
35
EXTSRTP_DESC=	Use libsrtp port (needed to get SRTP support in asterisk pjsip backend)
37
EXTSRTP_DESC=	Use libsrtp port (needed to get SRTP support in asterisk pjsip backend)
36
G711_DESC=	G.711 codec support
38
G711_DESC=	G.711 codec support
Lines 45-51 Link Here
45
SHARED_DESC=	Build shared libraries (other ports may depend on this)
47
SHARED_DESC=	Build shared libraries (other ports may depend on this)
46
SPEEXAEC_DESC=	Speex Acoustic Echo Canceller/AEC
48
SPEEXAEC_DESC=	Speex Acoustic Echo Canceller/AEC
47
V4L_DESC=	Video4Linux2 support
49
V4L_DESC=	Video4Linux2 support
48
WEBRTC_DESC=	Build linwebrtc
50
WEBRTC_DESC=	Build libwebrtc
49
51
50
OPTIONS_SUB=	yes
52
OPTIONS_SUB=	yes
51
53
Lines 52-58 Link Here
52
AMR_CONFIGURE_WITH=		opencore-amr
54
AMR_CONFIGURE_WITH=		opencore-amr
53
AMR_LIB_DEPENDS=		libopencore-amrwb.so:audio/opencore-amr \
55
AMR_LIB_DEPENDS=		libopencore-amrwb.so:audio/opencore-amr \
54
				libvo-amrwbenc.so:audio/vo-amrwbenc
56
				libvo-amrwbenc.so:audio/vo-amrwbenc
55
DEBUG_CFLAGS=			-DNDEBUG=0
57
DBUG_CFLAGS=			-DNDEBUG=0
56
DEBUG_CFLAGS_OFF=		-DNDEBUG=1
58
DEBUG_CFLAGS_OFF=		-DNDEBUG=1
57
EXTSRTP_CONFIGURE_WITH=		external-srtp
59
EXTSRTP_CONFIGURE_WITH=		external-srtp
58
EXTSRTP_CONFLICTS_OFF=		libsrtp libsrtp2
60
EXTSRTP_CONFLICTS_OFF=		libsrtp libsrtp2
(-)net/pjsip/distinfo (-3 / +3 lines)
Lines 1-3 Link Here
1
TIMESTAMP = 1560947683
1
TIMESTAMP = 1586797388
2
SHA256 (pjproject-2.9.tar.bz2) = d185ef7855c8ec07191dde92f54b65a7a4b7a6f7bf8c46f7af35ceeb1da2a636
2
SHA256 (pjsip-pjproject-2.10_GH0.tar.gz) = 936a4c5b98601b52325463a397ddf11ab4106c6a7b04f8dc7cdd377efbb597de
3
SIZE (pjproject-2.9.tar.bz2) = 5009546
3
SIZE (pjsip-pjproject-2.10_GH0.tar.gz) = 8768705
(-)net/pjsip/files/patch-0030 (-105 lines)
Lines 1-105 Link Here
1
From 489281f29fc7b97143cf79154f22e5007adaba39 Mon Sep 17 00:00:00 2001
2
From: George Joseph <gjoseph@digium.com>
3
Date: Wed, 9 Oct 2019 07:49:44 -0600
4
Subject: [PATCH 30/31] ssl regression fix
5
6
---
7
 pjlib/src/pj/ssl_sock_gtls.c       | 6 ++++--
8
 pjlib/src/pj/ssl_sock_imp_common.c | 4 ++++
9
 pjlib/src/pj/ssl_sock_imp_common.h | 3 +++
10
 pjlib/src/pj/ssl_sock_ossl.c       | 9 +++++----
11
 4 files changed, 16 insertions(+), 6 deletions(-)
12
13
diff --git a/pjlib/src/pj/ssl_sock_gtls.c b/pjlib/src/pj/ssl_sock_gtls.c
14
index 311b7b757..484770ae4 100644
15
--- pjlib/src/pj/ssl_sock_gtls.c
16
+++ pjlib/src/pj/ssl_sock_gtls.c
17
@@ -1050,7 +1050,8 @@ static void ssl_update_certs_info(pj_ssl_sock_t *ssock)
18
         goto us_out;
19
 
20
     tls_cert_get_info(ssock->pool, &ssock->local_cert_info, cert);
21
-    tls_cert_get_chain_raw(ssock->pool, &ssock->local_cert_info, us, 1);
22
+    pj_pool_reset(ssock->info_pool);
23
+    tls_cert_get_chain_raw(ssock->info_pool, &ssock->local_cert_info, us, 1);
24
 
25
 us_out:
26
     tls_last_error = ret;
27
@@ -1077,7 +1078,8 @@ us_out:
28
         goto peer_out;
29
 
30
     tls_cert_get_info(ssock->pool, &ssock->remote_cert_info, cert);
31
-    tls_cert_get_chain_raw(ssock->pool, &ssock->remote_cert_info, certs,
32
+    pj_pool_reset(ssock->info_pool);
33
+    tls_cert_get_chain_raw(ssock->info_pool, &ssock->remote_cert_info, certs,
34
     			   certslen);
35
 
36
 peer_out:
37
diff --git a/pjlib/src/pj/ssl_sock_imp_common.c b/pjlib/src/pj/ssl_sock_imp_common.c
38
index e6273d832..51a62a2fb 100644
39
--- pjlib/src/pj/ssl_sock_imp_common.c
40
+++ pjlib/src/pj/ssl_sock_imp_common.c
41
@@ -616,6 +616,7 @@ static void ssl_on_destroy(void *arg)
42
     }
43
 
44
     /* Secure release pool, i.e: all memory blocks will be zeroed first */
45
+    pj_pool_secure_release(&ssock->info_pool);
46
     pj_pool_secure_release(&ssock->pool);
47
 }
48
 
49
@@ -1262,15 +1263,18 @@ PJ_DEF(pj_status_t) pj_ssl_sock_create (pj_pool_t *pool,
50
 {
51
     pj_ssl_sock_t *ssock;
52
     pj_status_t status;
53
+    pj_pool_t *info_pool;
54
 
55
     PJ_ASSERT_RETURN(pool && param && p_ssock, PJ_EINVAL);
56
     PJ_ASSERT_RETURN(param->sock_type == pj_SOCK_STREAM(), PJ_ENOTSUP);
57
 
58
+    info_pool = pj_pool_create(pool->factory, "ssl_chain%p", 512, 512, NULL);
59
     pool = pj_pool_create(pool->factory, "ssl%p", 512, 512, NULL);
60
 
61
     /* Create secure socket */
62
     ssock = ssl_alloc(pool);
63
     ssock->pool = pool;
64
+    ssock->info_pool = info_pool;
65
     ssock->sock = PJ_INVALID_SOCKET;
66
     ssock->ssl_state = SSL_STATE_NULL;
67
     ssock->circ_buf_input.owner = ssock;
68
diff --git a/pjlib/src/pj/ssl_sock_imp_common.h b/pjlib/src/pj/ssl_sock_imp_common.h
69
index 09f259ef7..eb45f14e0 100644
70
--- pjlib/src/pj/ssl_sock_imp_common.h
71
+++ pjlib/src/pj/ssl_sock_imp_common.h
72
@@ -96,6 +96,9 @@ typedef struct circ_buf_t {
73
 struct pj_ssl_sock_t
74
 {
75
     pj_pool_t		 *pool;
76
+    pj_pool_t		 *info_pool; /* this is for certificate chain 
77
+				      * information allocation. Don't use for 
78
+				      * other purposes. */
79
     pj_ssl_sock_t	 *parent;
80
     pj_ssl_sock_param	  param;
81
     pj_ssl_sock_param	  newsock_param;
82
diff --git a/pjlib/src/pj/ssl_sock_ossl.c b/pjlib/src/pj/ssl_sock_ossl.c
83
index b4ac5c15f..2545b7c37 100644
84
--- pjlib/src/pj/ssl_sock_ossl.c
85
+++ pjlib/src/pj/ssl_sock_ossl.c
86
@@ -1637,11 +1637,12 @@ static void ssl_update_certs_info(pj_ssl_sock_t *ssock)
87
 
88
     chain = SSL_get_peer_cert_chain(ossock->ossl_ssl);
89
     if (chain) {
90
-       ssl_update_remote_cert_chain_info(ssock->pool,
91
-       					 &ssock->remote_cert_info,
92
-       					 chain, PJ_TRUE);
93
+	pj_pool_reset(ssock->info_pool);
94
+	ssl_update_remote_cert_chain_info(ssock->info_pool,
95
+       					  &ssock->remote_cert_info,
96
+       					  chain, PJ_TRUE);
97
     } else {
98
-       ssock->remote_cert_info.raw_chain.cnt = 0;
99
+	ssock->remote_cert_info.raw_chain.cnt = 0;
100
     }
101
 }
102
 
103
-- 
104
2.21.0
105
(-)net/pjsip/files/patch-0031 (-187 lines)
Lines 1-187 Link Here
1
From 9c6108ca392d5e0392e7fb5d2ffde85e3c44ce55 Mon Sep 17 00:00:00 2001
2
From: George Joseph <gjoseph@digium.com>
3
Date: Wed, 9 Oct 2019 07:50:32 -0600
4
Subject: [PATCH 31/31] transport regression fix
5
6
---
7
 pjsip/src/pjsip/sip_transport.c | 73 +++++++++++++++++++++++++++------
8
 1 file changed, 61 insertions(+), 12 deletions(-)
9
10
diff --git a/pjsip/src/pjsip/sip_transport.c b/pjsip/src/pjsip/sip_transport.c
11
index 65ac823d4..da6b70e50 100644
12
--- pjsip/src/pjsip/sip_transport.c
13
+++ pjsip/src/pjsip/sip_transport.c
14
@@ -50,6 +50,24 @@ static const char *addr_string(const pj_sockaddr_t *addr)
15
 		 str, sizeof(str));
16
     return str;
17
 }
18
+static const char* print_tpsel_info(const pjsip_tpselector *sel)
19
+{
20
+    static char tpsel_info_buf[80];
21
+    if (!sel) return "(null)";
22
+    if (sel->type==PJSIP_TPSELECTOR_LISTENER)
23
+	pj_ansi_snprintf(tpsel_info_buf, sizeof(tpsel_info_buf),
24
+			 "listener[%s], reuse=%d", sel->u.listener->obj_name,
25
+			 !sel->disable_connection_reuse);
26
+    else if (sel->type==PJSIP_TPSELECTOR_TRANSPORT)
27
+	pj_ansi_snprintf(tpsel_info_buf, sizeof(tpsel_info_buf),
28
+			 "transport[%s], reuse=%d", sel->u.transport->info,
29
+			 !sel->disable_connection_reuse);
30
+    else
31
+	pj_ansi_snprintf(tpsel_info_buf, sizeof(tpsel_info_buf),
32
+			 "unknown[%p], reuse=%d", sel->u.ptr,
33
+			 !sel->disable_connection_reuse);
34
+    return tpsel_info_buf;
35
+}
36
 #else
37
 #   define TRACE_(x)
38
 #endif
39
@@ -1210,10 +1228,14 @@ PJ_DEF(pj_status_t) pjsip_transport_register( pjsip_tpmgr *mgr,
40
 	 * new transport to the list.
41
 	 */
42
 	pj_list_push_back(tp_ref, tp_add);
43
+	TRACE_((THIS_FILE, "Remote address already registered, "
44
+			   "appended the transport to the list"));
45
     } else {
46
 	/* Transport list not found, add it to the hash table. */
47
 	pj_hash_set_np(mgr->table, &tp->key, key_len, hval, tp_add->tp_buf,
48
 		       tp_add);
49
+	TRACE_((THIS_FILE, "Remote address not registered, "
50
+			   "added the transport to the hash"));
51
     }
52
 
53
     /* Add ref transport group lock, if any */
54
@@ -1283,6 +1305,13 @@ static pj_status_t destroy_transport( pjsip_tpmgr *mgr,
55
 			/* The transport list has multiple entry. */
56
 			pj_hash_set_np(mgr->table, &tp_next->tp->key, key_len,
57
 				       hval, tp_next->tp_buf, tp_next);
58
+			TRACE_((THIS_FILE, "Hash entry updated after "
59
+					   "transport %d being destroyed",
60
+					   tp->obj_name));
61
+		    } else {
62
+			TRACE_((THIS_FILE, "Hash entry deleted after "
63
+					   "transport %d being destroyed",
64
+					   tp->obj_name));
65
 		    }
66
 		}
67
 
68
@@ -1294,6 +1323,14 @@ static pj_status_t destroy_transport( pjsip_tpmgr *mgr,
69
 	    }
70
 	    tp_iter = tp_iter->next;
71
 	} while (tp_iter != tp_ref);
72
+
73
+	if (tp_iter->tp != tp) {
74
+	    PJ_LOG(3, (THIS_FILE, "Warning: transport %s being destroyed is "
75
+				  "not registered", tp->obj_name));
76
+	}
77
+    } else {
78
+	PJ_LOG(3, (THIS_FILE, "Warning: transport %s being destroyed is "
79
+			      "not found in the hash table", tp->obj_name));
80
     }
81
 
82
     pj_lock_release(mgr->lock);
83
@@ -2159,6 +2196,7 @@ PJ_DEF(pj_status_t) pjsip_tpmgr_acquire_transport(pjsip_tpmgr *mgr,
84
 					  NULL, tp);
85
 }
86
 
87
+
88
 /*
89
  * pjsip_tpmgr_acquire_transport2()
90
  *
91
@@ -2176,8 +2214,9 @@ PJ_DEF(pj_status_t) pjsip_tpmgr_acquire_transport2(pjsip_tpmgr *mgr,
92
     pjsip_tpfactory *factory;
93
     pj_status_t status;
94
 
95
-    TRACE_((THIS_FILE,"Acquiring transport type=%s, remote=%s:%d",
96
+    TRACE_((THIS_FILE,"Acquiring transport type=%s, sel=%s remote=%s:%d",
97
 		       pjsip_transport_get_type_name(type),
98
+		       print_tpsel_info(sel),
99
 		       addr_string(remote),
100
 		       pj_sockaddr_get_port(remote)));
101
 
102
@@ -2194,6 +2233,7 @@ PJ_DEF(pj_status_t) pjsip_tpmgr_acquire_transport2(pjsip_tpmgr *mgr,
103
 	/* See if the transport is (not) suitable */
104
 	if (seltp->key.type != type) {
105
 	    pj_lock_release(mgr->lock);
106
+	    TRACE_((THIS_FILE, "Transport type in tpsel not matched"));
107
 	    return PJSIP_ETPNOTSUITABLE;
108
 	}
109
 
110
@@ -2234,6 +2274,7 @@ PJ_DEF(pj_status_t) pjsip_tpmgr_acquire_transport2(pjsip_tpmgr *mgr,
111
 	{
112
 	    if (sel->u.listener->type != type) {
113
 		pj_lock_release(mgr->lock);
114
+		TRACE_((THIS_FILE, "Listener type in tpsel not matched"));
115
 		return PJSIP_ETPNOTSUITABLE;
116
 	    }
117
 	}
118
@@ -2249,21 +2290,25 @@ PJ_DEF(pj_status_t) pjsip_tpmgr_acquire_transport2(pjsip_tpmgr *mgr,
119
 	    tp_entry = (transport *)pj_hash_get(mgr->table, &key, key_len,
120
 						NULL);
121
 	    if (tp_entry) {
122
-		if (sel && sel->type == PJSIP_TPSELECTOR_LISTENER) {
123
-		    transport *tp_iter = tp_entry;
124
-		    do {
125
+		transport *tp_iter = tp_entry;
126
+		do {
127
+		    /* Don't use transport being shutdown */
128
+		    if (!tp_iter->tp->is_shutdown) {
129
 			if (sel && sel->type == PJSIP_TPSELECTOR_LISTENER &&
130
-			    sel->u.listener &&
131
-			    tp_iter->tp->factory == sel->u.listener)
132
+			    sel->u.listener)
133
 			{
134
+			    /* Match listener if selector is set */
135
+			    if (tp_iter->tp->factory == sel->u.listener) {
136
+				tp_ref = tp_iter->tp;
137
+				break;
138
+			    }
139
+			} else {
140
 			    tp_ref = tp_iter->tp;
141
 			    break;
142
 			}
143
-			tp_iter = tp_iter->next;
144
-		    } while (tp_iter != tp_entry);
145
-		} else {
146
-		    tp_ref = tp_entry->tp;
147
-		}
148
+		    }
149
+		    tp_iter = tp_iter->next;
150
+		} while (tp_iter != tp_entry);
151
 	    }
152
 	}
153
 
154
@@ -2276,7 +2321,7 @@ PJ_DEF(pj_status_t) pjsip_tpmgr_acquire_transport2(pjsip_tpmgr *mgr,
155
 
156
 	    /* Ignore address for loop transports. */
157
 	    if (type == PJSIP_TRANSPORT_LOOP ||
158
-		     type == PJSIP_TRANSPORT_LOOP_DGRAM)
159
+		type == PJSIP_TRANSPORT_LOOP_DGRAM)
160
 	    {
161
 		pj_sockaddr *addr = &key.rem_addr;
162
 
163
@@ -2315,6 +2360,7 @@ PJ_DEF(pj_status_t) pjsip_tpmgr_acquire_transport2(pjsip_tpmgr *mgr,
164
 	     * 'duplicate' of the existing transport (same type & remote addr,
165
 	     * but different factory).
166
 	     */
167
+	    TRACE_((THIS_FILE, "Transport found but from different listener"));
168
 	}
169
 
170
 	if (tp_ref!=NULL && !tp_ref->is_shutdown) {
171
@@ -2347,10 +2393,13 @@ PJ_DEF(pj_status_t) pjsip_tpmgr_acquire_transport2(pjsip_tpmgr *mgr,
172
 	     */
173
 
174
 	    /* Verify that the listener type matches the destination type */
175
+	    /* Already checked above. */
176
+	    /*
177
 	    if (sel->u.listener->type != type) {
178
 		pj_lock_release(mgr->lock);
179
 		return PJSIP_ETPNOTSUITABLE;
180
 	    }
181
+	    */
182
 
183
 	    /* We'll use this listener to create transport */
184
 	    factory = sel->u.listener;
185
-- 
186
2.21.0
187
(-)net/pjsip/pkg-plist (+1 lines)
Lines 229-234 Link Here
229
include/pjmedia/wav_port.h
229
include/pjmedia/wav_port.h
230
include/pjmedia/wave.h
230
include/pjmedia/wave.h
231
include/pjmedia/wsola.h
231
include/pjmedia/wsola.h
232
include/pjmedia-codec/vpx.h
232
include/pjnath.h
233
include/pjnath.h
233
include/pjnath/config.h
234
include/pjnath/config.h
234
include/pjnath/errno.h
235
include/pjnath/errno.h

Return to bug 245607