<p>Friendly Automation <strong>submitted</strong> this change.</p><p><a href="https://gerrit.asterisk.org/c/asterisk/+/18987">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span></span><br></pre><div style="white-space:pre-wrap">Approvals:
Sean Bright: Looks good to me, but someone else must approve
Benjamin Keith Ford: Looks good to me, but someone else must approve
George Joseph: Looks good to me, approved
Friendly Automation: Approved for Submit
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">pjsip: Add TLS transport reload support for certificate and key.<br><br>This change adds support using the pjsip_tls_transport_restart<br>function for reloading the TLS certificate and key, if the filenames<br>remain unchanged. This is useful for Let's Encrypt and other<br>situations. Note that no restart of the transport will occur if<br>the certificate and key remain unchanged.<br><br>ASTERISK-30186<br><br>Change-Id: I9bc95a6bf791830a9491ad9fa43c17d4010028d0<br>---<br>M configs/samples/pjsip.conf.sample<br>M configure<br>M configure.ac<br>A doc/CHANGES-staging/res_pjsip_tls_cert_key_reload.txt<br>M include/asterisk/autoconfig.h.in<br>M include/asterisk/res_pjsip.h<br>M menuselect/autoconfig.h.in<br>M menuselect/configure<br>M res/res_pjsip/config_transport.c<br>M res/res_pjsip/pjsip_config.xml<br>M third-party/pjproject/configure.m4<br>11 files changed, 413 insertions(+), 134 deletions(-)<br><br></pre>
<pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/configs/samples/pjsip.conf.sample b/configs/samples/pjsip.conf.sample</span><br><span>index 4436951..05260bc 100644</span><br><span>--- a/configs/samples/pjsip.conf.sample</span><br><span>+++ b/configs/samples/pjsip.conf.sample</span><br><span>@@ -1001,11 +1001,16 @@</span><br><span> ; and/or "asterisk_ecc.pem" are loaded (certificate, inter-</span><br><span> ; mediates, private key), to support multiple algorithms for</span><br><span> ; server authentication (RSA, DSA, ECDSA). If the chains are</span><br><span style="color: hsl(0, 100%, 40%);">- ; different, at least OpenSSL 1.0.2 is required.</span><br><span style="color: hsl(120, 100%, 40%);">+ ; different, at least OpenSSL 1.0.2 is required. This option</span><br><span style="color: hsl(120, 100%, 40%);">+ ; can be reloaded resulting in an updated certificate if the</span><br><span style="color: hsl(120, 100%, 40%);">+ ; filename remains unchanged.</span><br><span> ; (default: "")</span><br><span> ;cipher= ; Preferred cryptography cipher names TLS ONLY (default: "")</span><br><span> ;method= ; Method of SSL transport TLS ONLY (default: "")</span><br><span style="color: hsl(0, 100%, 40%);">-;priv_key_file= ; Private key file TLS ONLY (default: "")</span><br><span style="color: hsl(120, 100%, 40%);">+;priv_key_file= ; Private key file TLS ONLY. This option can be reloaded</span><br><span style="color: hsl(120, 100%, 40%);">+ ; resulting in an updated private key if the filename remains</span><br><span style="color: hsl(120, 100%, 40%);">+ ; unchanged.</span><br><span style="color: hsl(120, 100%, 40%);">+ ; (default: "")</span><br><span> ;verify_client= ; Require verification of client certificate TLS ONLY (default:</span><br><span> ; "")</span><br><span> ;verify_server= ; Require verification of server certificate TLS ONLY (default:</span><br><span>diff --git a/configure b/configure</span><br><span>index 8492e83..a2f59e01 100755</span><br><span>--- a/configure</span><br><span>+++ b/configure</span><br><span>@@ -955,6 +955,10 @@</span><br><span> POPT_DIR</span><br><span> POPT_INCLUDE</span><br><span> POPT_LIB</span><br><span style="color: hsl(120, 100%, 40%);">+PBX_PJSIP_TLS_TRANSPORT_RESTART</span><br><span style="color: hsl(120, 100%, 40%);">+PJSIP_TLS_TRANSPORT_RESTART_DIR</span><br><span style="color: hsl(120, 100%, 40%);">+PJSIP_TLS_TRANSPORT_RESTART_INCLUDE</span><br><span style="color: hsl(120, 100%, 40%);">+PJSIP_TLS_TRANSPORT_RESTART_LIB</span><br><span> PBX_PJSIP_ENDPOINT_COMPACT_FORM</span><br><span> PJSIP_ENDPOINT_COMPACT_FORM_DIR</span><br><span> PJSIP_ENDPOINT_COMPACT_FORM_INCLUDE</span><br><span>@@ -10297,8 +10301,8 @@</span><br><span> if test "x${PBX_OPENSSL}" != "x1" -a "${USE_OPENSSL}" != "no"; then</span><br><span> </span><br><span> pkg_failed=no</span><br><span style="color: hsl(0, 100%, 40%);">-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openssl >= 1.1.0" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-printf %s "checking for openssl >= 1.1.0... " >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OPENSSL" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf %s "checking for OPENSSL... " >&6; }</span><br><span> </span><br><span> if test -n "$OPENSSL_CFLAGS"; then</span><br><span> pkg_cv_OPENSSL_CFLAGS="$OPENSSL_CFLAGS"</span><br><span>@@ -10338,7 +10342,7 @@</span><br><span> </span><br><span> </span><br><span> if test $pkg_failed = yes; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then</span><br><span>@@ -10359,7 +10363,7 @@</span><br><span> </span><br><span> </span><br><span> elif test $pkg_failed = untried; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> PBX_OPENSSL=0</span><br><span>@@ -10388,8 +10392,8 @@</span><br><span> if test "x${PBX_OPENSSL}" != "x1" -a "${USE_OPENSSL}" != "no"; then</span><br><span> </span><br><span> pkg_failed=no</span><br><span style="color: hsl(0, 100%, 40%);">-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openssl11" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-printf %s "checking for openssl11... " >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OPENSSL" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf %s "checking for OPENSSL... " >&6; }</span><br><span> </span><br><span> if test -n "$OPENSSL_CFLAGS"; then</span><br><span> pkg_cv_OPENSSL_CFLAGS="$OPENSSL_CFLAGS"</span><br><span>@@ -10429,7 +10433,7 @@</span><br><span> </span><br><span> </span><br><span> if test $pkg_failed = yes; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then</span><br><span>@@ -10450,7 +10454,7 @@</span><br><span> </span><br><span> </span><br><span> elif test $pkg_failed = untried; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> PBX_OPENSSL=0</span><br><span>@@ -10484,8 +10488,8 @@</span><br><span> if test "x${PBX_OPENSSL}" != "x1" -a "${USE_OPENSSL}" != "no"; then</span><br><span> </span><br><span> pkg_failed=no</span><br><span style="color: hsl(0, 100%, 40%);">-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openssl" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-printf %s "checking for openssl... " >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OPENSSL" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf %s "checking for OPENSSL... " >&6; }</span><br><span> </span><br><span> if test -n "$OPENSSL_CFLAGS"; then</span><br><span> pkg_cv_OPENSSL_CFLAGS="$OPENSSL_CFLAGS"</span><br><span>@@ -10525,7 +10529,7 @@</span><br><span> </span><br><span> </span><br><span> if test $pkg_failed = yes; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then</span><br><span>@@ -10546,7 +10550,7 @@</span><br><span> </span><br><span> </span><br><span> elif test $pkg_failed = untried; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> PBX_OPENSSL=0</span><br><span>@@ -11171,6 +11175,9 @@</span><br><span> printf "%s\n" "#define HAVE_PJPROJECT_ON_VALID_ICE_PAIR_CALLBACK 1" >>confdefs.h</span><br><span> </span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+printf "%s\n" "#define HAVE_PJSIP_TLS_TRANSPORT_RESTART 1" >>confdefs.h</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> </span><br><span> </span><br><span>@@ -13354,6 +13361,18 @@</span><br><span> </span><br><span> </span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+PJSIP_TLS_TRANSPORT_RESTART_DESCRIP="PJSIP TLS Transport Restart Support"</span><br><span style="color: hsl(120, 100%, 40%);">+PJSIP_TLS_TRANSPORT_RESTART_OPTION=pjsip</span><br><span style="color: hsl(120, 100%, 40%);">+PJSIP_TLS_TRANSPORT_RESTART_DIR=${PJPROJECT_DIR}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+PBX_PJSIP_TLS_TRANSPORT_RESTART=0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> fi</span><br><span> </span><br><span> </span><br><span>@@ -15126,8 +15145,8 @@</span><br><span> if test "x${PBX_LIBEDIT}" != "x1" -a "${USE_LIBEDIT}" != "no"; then</span><br><span> </span><br><span> pkg_failed=no</span><br><span style="color: hsl(0, 100%, 40%);">-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libedit" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-printf %s "checking for libedit... " >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBEDIT" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf %s "checking for LIBEDIT... " >&6; }</span><br><span> </span><br><span> if test -n "$LIBEDIT_CFLAGS"; then</span><br><span> pkg_cv_LIBEDIT_CFLAGS="$LIBEDIT_CFLAGS"</span><br><span>@@ -15167,7 +15186,7 @@</span><br><span> </span><br><span> </span><br><span> if test $pkg_failed = yes; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then</span><br><span>@@ -15188,7 +15207,7 @@</span><br><span> </span><br><span> </span><br><span> elif test $pkg_failed = untried; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> PBX_LIBEDIT=0</span><br><span>@@ -15587,8 +15606,8 @@</span><br><span> if test "x${PBX_JANSSON}" != "x1" -a "${USE_JANSSON}" != "no"; then</span><br><span> </span><br><span> pkg_failed=no</span><br><span style="color: hsl(0, 100%, 40%);">-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for jansson >= 2.11" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-printf %s "checking for jansson >= 2.11... " >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for JANSSON" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf %s "checking for JANSSON... " >&6; }</span><br><span> </span><br><span> if test -n "$JANSSON_CFLAGS"; then</span><br><span> pkg_cv_JANSSON_CFLAGS="$JANSSON_CFLAGS"</span><br><span>@@ -15628,7 +15647,7 @@</span><br><span> </span><br><span> </span><br><span> if test $pkg_failed = yes; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then</span><br><span>@@ -15649,7 +15668,7 @@</span><br><span> </span><br><span> </span><br><span> elif test $pkg_failed = untried; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> PBX_JANSSON=0</span><br><span>@@ -15905,8 +15924,8 @@</span><br><span> if test "x${PBX_LIBXML2}" != "x1" -a "${USE_LIBXML2}" != "no"; then</span><br><span> </span><br><span> pkg_failed=no</span><br><span style="color: hsl(0, 100%, 40%);">-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-printf %s "checking for libxml-2.0... " >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBXML2" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf %s "checking for LIBXML2... " >&6; }</span><br><span> </span><br><span> if test -n "$LIBXML2_CFLAGS"; then</span><br><span> pkg_cv_LIBXML2_CFLAGS="$LIBXML2_CFLAGS"</span><br><span>@@ -15946,7 +15965,7 @@</span><br><span> </span><br><span> </span><br><span> if test $pkg_failed = yes; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then</span><br><span>@@ -15967,7 +15986,7 @@</span><br><span> </span><br><span> </span><br><span> elif test $pkg_failed = untried; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> PBX_LIBXML2=0</span><br><span>@@ -23180,8 +23199,8 @@</span><br><span> if test "x${PBX_ILBC}" != "x1" -a "${USE_ILBC}" != "no"; then</span><br><span> </span><br><span> pkg_failed=no</span><br><span style="color: hsl(0, 100%, 40%);">-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libilbc" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-printf %s "checking for libilbc... " >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ILBC" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf %s "checking for ILBC... " >&6; }</span><br><span> </span><br><span> if test -n "$ILBC_CFLAGS"; then</span><br><span> pkg_cv_ILBC_CFLAGS="$ILBC_CFLAGS"</span><br><span>@@ -23221,7 +23240,7 @@</span><br><span> </span><br><span> </span><br><span> if test $pkg_failed = yes; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then</span><br><span>@@ -23242,7 +23261,7 @@</span><br><span> </span><br><span> </span><br><span> elif test $pkg_failed = untried; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> PBX_ILBC=0</span><br><span>@@ -25940,8 +25959,8 @@</span><br><span> if test "x${PBX_NETSNMP}" != "x1" -a "${USE_NETSNMP}" != "no"; then</span><br><span> </span><br><span> pkg_failed=no</span><br><span style="color: hsl(0, 100%, 40%);">-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for netsnmp-agent" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-printf %s "checking for netsnmp-agent... " >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for NETSNMP" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf %s "checking for NETSNMP... " >&6; }</span><br><span> </span><br><span> if test -n "$NETSNMP_CFLAGS"; then</span><br><span> pkg_cv_NETSNMP_CFLAGS="$NETSNMP_CFLAGS"</span><br><span>@@ -25981,7 +26000,7 @@</span><br><span> </span><br><span> </span><br><span> if test $pkg_failed = yes; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then</span><br><span>@@ -26002,7 +26021,7 @@</span><br><span> </span><br><span> </span><br><span> elif test $pkg_failed = untried; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> PBX_NETSNMP=0</span><br><span>@@ -27577,8 +27596,8 @@</span><br><span> if test "x${PBX_PJPROJECT}" != "x1" -a "${USE_PJPROJECT}" != "no"; then</span><br><span> </span><br><span> pkg_failed=no</span><br><span style="color: hsl(0, 100%, 40%);">-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libpjproject" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-printf %s "checking for libpjproject... " >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PJPROJECT" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf %s "checking for PJPROJECT... " >&6; }</span><br><span> </span><br><span> if test -n "$PJPROJECT_CFLAGS"; then</span><br><span> pkg_cv_PJPROJECT_CFLAGS="$PJPROJECT_CFLAGS"</span><br><span>@@ -27618,7 +27637,7 @@</span><br><span> </span><br><span> </span><br><span> if test $pkg_failed = yes; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then</span><br><span>@@ -27639,7 +27658,7 @@</span><br><span> </span><br><span> </span><br><span> elif test $pkg_failed = untried; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> PBX_PJPROJECT=0</span><br><span>@@ -28744,6 +28763,102 @@</span><br><span> fi</span><br><span> </span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+if test "x${PBX_PJSIP_TLS_TRANSPORT_RESTART}" != "x1" -a "${USE_PJSIP_TLS_TRANSPORT_RESTART}" != "no"; then</span><br><span style="color: hsl(120, 100%, 40%);">+ pbxlibdir=""</span><br><span style="color: hsl(120, 100%, 40%);">+ # if --with-PJSIP_TLS_TRANSPORT_RESTART=DIR has been specified, use it.</span><br><span style="color: hsl(120, 100%, 40%);">+ if test "x${PJSIP_TLS_TRANSPORT_RESTART_DIR}" != "x"; then</span><br><span style="color: hsl(120, 100%, 40%);">+ if test -d ${PJSIP_TLS_TRANSPORT_RESTART_DIR}/lib; then</span><br><span style="color: hsl(120, 100%, 40%);">+ pbxlibdir="-L${PJSIP_TLS_TRANSPORT_RESTART_DIR}/lib"</span><br><span style="color: hsl(120, 100%, 40%);">+ else</span><br><span style="color: hsl(120, 100%, 40%);">+ pbxlibdir="-L${PJSIP_TLS_TRANSPORT_RESTART_DIR}"</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ ast_ext_lib_check_save_CFLAGS="${CFLAGS}"</span><br><span style="color: hsl(120, 100%, 40%);">+ CFLAGS="${CFLAGS} $PJPROJECT_CFLAGS"</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pjsip_tls_transport_restart in -lpjsip" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf %s "checking for pjsip_tls_transport_restart in -lpjsip... " >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+if test ${ac_cv_lib_pjsip_pjsip_tls_transport_restart+y}</span><br><span style="color: hsl(120, 100%, 40%);">+then :</span><br><span style="color: hsl(120, 100%, 40%);">+ printf %s "(cached) " >&6</span><br><span style="color: hsl(120, 100%, 40%);">+else $as_nop</span><br><span style="color: hsl(120, 100%, 40%);">+ ac_check_lib_save_LIBS=$LIBS</span><br><span style="color: hsl(120, 100%, 40%);">+LIBS="-lpjsip ${pbxlibdir} $PJPROJECT_LIB $LIBS"</span><br><span style="color: hsl(120, 100%, 40%);">+cat confdefs.h - <<_ACEOF >conftest.$ac_ext</span><br><span style="color: hsl(120, 100%, 40%);">+/* end confdefs.h. */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Override any GCC internal prototype to avoid an error.</span><br><span style="color: hsl(120, 100%, 40%);">+ Use char because int might match the return type of a GCC</span><br><span style="color: hsl(120, 100%, 40%);">+ builtin and then its argument prototype would still apply. */</span><br><span style="color: hsl(120, 100%, 40%);">+char pjsip_tls_transport_restart ();</span><br><span style="color: hsl(120, 100%, 40%);">+int</span><br><span style="color: hsl(120, 100%, 40%);">+main (void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+return pjsip_tls_transport_restart ();</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span style="color: hsl(120, 100%, 40%);">+ return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+_ACEOF</span><br><span style="color: hsl(120, 100%, 40%);">+if ac_fn_c_try_link "$LINENO"</span><br><span style="color: hsl(120, 100%, 40%);">+then :</span><br><span style="color: hsl(120, 100%, 40%);">+ ac_cv_lib_pjsip_pjsip_tls_transport_restart=yes</span><br><span style="color: hsl(120, 100%, 40%);">+else $as_nop</span><br><span style="color: hsl(120, 100%, 40%);">+ ac_cv_lib_pjsip_pjsip_tls_transport_restart=no</span><br><span style="color: hsl(120, 100%, 40%);">+fi</span><br><span style="color: hsl(120, 100%, 40%);">+rm -f core conftest.err conftest.$ac_objext conftest.beam \</span><br><span style="color: hsl(120, 100%, 40%);">+ conftest$ac_exeext conftest.$ac_ext</span><br><span style="color: hsl(120, 100%, 40%);">+LIBS=$ac_check_lib_save_LIBS</span><br><span style="color: hsl(120, 100%, 40%);">+fi</span><br><span style="color: hsl(120, 100%, 40%);">+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pjsip_pjsip_tls_transport_restart" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf "%s\n" "$ac_cv_lib_pjsip_pjsip_tls_transport_restart" >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+if test "x$ac_cv_lib_pjsip_pjsip_tls_transport_restart" = xyes</span><br><span style="color: hsl(120, 100%, 40%);">+then :</span><br><span style="color: hsl(120, 100%, 40%);">+ AST_PJSIP_TLS_TRANSPORT_RESTART_FOUND=yes</span><br><span style="color: hsl(120, 100%, 40%);">+else $as_nop</span><br><span style="color: hsl(120, 100%, 40%);">+ AST_PJSIP_TLS_TRANSPORT_RESTART_FOUND=no</span><br><span style="color: hsl(120, 100%, 40%);">+fi</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ CFLAGS="${ast_ext_lib_check_save_CFLAGS}"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ # now check for the header.</span><br><span style="color: hsl(120, 100%, 40%);">+ if test "${AST_PJSIP_TLS_TRANSPORT_RESTART_FOUND}" = "yes"; then</span><br><span style="color: hsl(120, 100%, 40%);">+ PJSIP_TLS_TRANSPORT_RESTART_LIB="${pbxlibdir} -lpjsip $PJPROJECT_LIB"</span><br><span style="color: hsl(120, 100%, 40%);">+ # if --with-PJSIP_TLS_TRANSPORT_RESTART=DIR has been specified, use it.</span><br><span style="color: hsl(120, 100%, 40%);">+ if test "x${PJSIP_TLS_TRANSPORT_RESTART_DIR}" != "x"; then</span><br><span style="color: hsl(120, 100%, 40%);">+ PJSIP_TLS_TRANSPORT_RESTART_INCLUDE="-I${PJSIP_TLS_TRANSPORT_RESTART_DIR}/include"</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+ PJSIP_TLS_TRANSPORT_RESTART_INCLUDE="${PJSIP_TLS_TRANSPORT_RESTART_INCLUDE} $PJPROJECT_CFLAGS"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ # check for the header</span><br><span style="color: hsl(120, 100%, 40%);">+ ast_ext_lib_check_saved_CPPFLAGS="${CPPFLAGS}"</span><br><span style="color: hsl(120, 100%, 40%);">+ CPPFLAGS="${CPPFLAGS} ${PJSIP_TLS_TRANSPORT_RESTART_INCLUDE}"</span><br><span style="color: hsl(120, 100%, 40%);">+ ac_fn_c_check_header_compile "$LINENO" "pjsip.h" "ac_cv_header_pjsip_h" "$ac_includes_default"</span><br><span style="color: hsl(120, 100%, 40%);">+if test "x$ac_cv_header_pjsip_h" = xyes</span><br><span style="color: hsl(120, 100%, 40%);">+then :</span><br><span style="color: hsl(120, 100%, 40%);">+ PJSIP_TLS_TRANSPORT_RESTART_HEADER_FOUND=1</span><br><span style="color: hsl(120, 100%, 40%);">+else $as_nop</span><br><span style="color: hsl(120, 100%, 40%);">+ PJSIP_TLS_TRANSPORT_RESTART_HEADER_FOUND=0</span><br><span style="color: hsl(120, 100%, 40%);">+fi</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ CPPFLAGS="${ast_ext_lib_check_saved_CPPFLAGS}"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ if test "x${PJSIP_TLS_TRANSPORT_RESTART_HEADER_FOUND}" = "x0" ; then</span><br><span style="color: hsl(120, 100%, 40%);">+ PJSIP_TLS_TRANSPORT_RESTART_LIB=""</span><br><span style="color: hsl(120, 100%, 40%);">+ PJSIP_TLS_TRANSPORT_RESTART_INCLUDE=""</span><br><span style="color: hsl(120, 100%, 40%);">+ else</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ PBX_PJSIP_TLS_TRANSPORT_RESTART=1</span><br><span style="color: hsl(120, 100%, 40%);">+ cat >>confdefs.h <<_ACEOF</span><br><span style="color: hsl(120, 100%, 40%);">+#define HAVE_PJSIP_TLS_TRANSPORT_RESTART 1</span><br><span style="color: hsl(120, 100%, 40%);">+_ACEOF</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+fi</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> fi</span><br><span> fi</span><br><span> </span><br><span>@@ -28755,8 +28870,8 @@</span><br><span> if test "x${PBX_PYTHONDEV}" != "x1" -a "${USE_PYTHONDEV}" != "no"; then</span><br><span> </span><br><span> pkg_failed=no</span><br><span style="color: hsl(0, 100%, 40%);">-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python-2.7" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-printf %s "checking for python-2.7... " >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PYTHONDEV" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf %s "checking for PYTHONDEV... " >&6; }</span><br><span> </span><br><span> if test -n "$PYTHONDEV_CFLAGS"; then</span><br><span> pkg_cv_PYTHONDEV_CFLAGS="$PYTHONDEV_CFLAGS"</span><br><span>@@ -28796,7 +28911,7 @@</span><br><span> </span><br><span> </span><br><span> if test $pkg_failed = yes; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then</span><br><span>@@ -28817,7 +28932,7 @@</span><br><span> </span><br><span> </span><br><span> elif test $pkg_failed = untried; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> PBX_PYTHONDEV=0</span><br><span>@@ -28843,8 +28958,8 @@</span><br><span> if test "x${PBX_PYTHONDEV}" != "x1" -a "${USE_PYTHONDEV}" != "no"; then</span><br><span> </span><br><span> pkg_failed=no</span><br><span style="color: hsl(0, 100%, 40%);">-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python2" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-printf %s "checking for python2... " >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PYTHONDEV" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf %s "checking for PYTHONDEV... " >&6; }</span><br><span> </span><br><span> if test -n "$PYTHONDEV_CFLAGS"; then</span><br><span> pkg_cv_PYTHONDEV_CFLAGS="$PYTHONDEV_CFLAGS"</span><br><span>@@ -28884,7 +28999,7 @@</span><br><span> </span><br><span> </span><br><span> if test $pkg_failed = yes; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then</span><br><span>@@ -28905,7 +29020,7 @@</span><br><span> </span><br><span> </span><br><span> elif test $pkg_failed = untried; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> PBX_PYTHONDEV=0</span><br><span>@@ -28931,8 +29046,8 @@</span><br><span> if test "x${PBX_PYTHONDEV}" != "x1" -a "${USE_PYTHONDEV}" != "no"; then</span><br><span> </span><br><span> pkg_failed=no</span><br><span style="color: hsl(0, 100%, 40%);">-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-printf %s "checking for python... " >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PYTHONDEV" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf %s "checking for PYTHONDEV... " >&6; }</span><br><span> </span><br><span> if test -n "$PYTHONDEV_CFLAGS"; then</span><br><span> pkg_cv_PYTHONDEV_CFLAGS="$PYTHONDEV_CFLAGS"</span><br><span>@@ -28972,7 +29087,7 @@</span><br><span> </span><br><span> </span><br><span> if test $pkg_failed = yes; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then</span><br><span>@@ -28993,7 +29108,7 @@</span><br><span> </span><br><span> </span><br><span> elif test $pkg_failed = untried; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> PBX_PYTHONDEV=0</span><br><span>@@ -29127,8 +29242,8 @@</span><br><span> if test "x${PBX_PORTAUDIO}" != "x1" -a "${USE_PORTAUDIO}" != "no"; then</span><br><span> </span><br><span> pkg_failed=no</span><br><span style="color: hsl(0, 100%, 40%);">-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for portaudio-2.0" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-printf %s "checking for portaudio-2.0... " >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PORTAUDIO" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf %s "checking for PORTAUDIO... " >&6; }</span><br><span> </span><br><span> if test -n "$PORTAUDIO_CFLAGS"; then</span><br><span> pkg_cv_PORTAUDIO_CFLAGS="$PORTAUDIO_CFLAGS"</span><br><span>@@ -29168,7 +29283,7 @@</span><br><span> </span><br><span> </span><br><span> if test $pkg_failed = yes; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then</span><br><span>@@ -29189,7 +29304,7 @@</span><br><span> </span><br><span> </span><br><span> elif test $pkg_failed = untried; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> PBX_PORTAUDIO=0</span><br><span>@@ -35142,8 +35257,8 @@</span><br><span> if test "x${PBX_GMIME}" != "x1" -a "${USE_GMIME}" != "no"; then</span><br><span> </span><br><span> pkg_failed=no</span><br><span style="color: hsl(0, 100%, 40%);">-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gmime-$ver" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-printf %s "checking for gmime-$ver... " >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GMIME" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf %s "checking for GMIME... " >&6; }</span><br><span> </span><br><span> if test -n "$GMIME_CFLAGS"; then</span><br><span> pkg_cv_GMIME_CFLAGS="$GMIME_CFLAGS"</span><br><span>@@ -35183,7 +35298,7 @@</span><br><span> </span><br><span> </span><br><span> if test $pkg_failed = yes; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then</span><br><span>@@ -35204,7 +35319,7 @@</span><br><span> </span><br><span> </span><br><span> elif test $pkg_failed = untried; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> PBX_GMIME=0</span><br><span>@@ -36592,8 +36707,8 @@</span><br><span> if test "x${PBX_GTK2}" != "x1" -a "${USE_GTK2}" != "no"; then</span><br><span> </span><br><span> pkg_failed=no</span><br><span style="color: hsl(0, 100%, 40%);">-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gtk+-2.0" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-printf %s "checking for gtk+-2.0... " >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GTK2" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf %s "checking for GTK2... " >&6; }</span><br><span> </span><br><span> if test -n "$GTK2_CFLAGS"; then</span><br><span> pkg_cv_GTK2_CFLAGS="$GTK2_CFLAGS"</span><br><span>@@ -36633,7 +36748,7 @@</span><br><span> </span><br><span> </span><br><span> if test $pkg_failed = yes; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then</span><br><span>@@ -36654,7 +36769,7 @@</span><br><span> </span><br><span> </span><br><span> elif test $pkg_failed = untried; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> PBX_GTK2=0</span><br><span>@@ -36703,8 +36818,8 @@</span><br><span> if test "x${PBX_SYSTEMD}" != "x1" -a "${USE_SYSTEMD}" != "no"; then</span><br><span> </span><br><span> pkg_failed=no</span><br><span style="color: hsl(0, 100%, 40%);">-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libsystemd" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-printf %s "checking for libsystemd... " >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SYSTEMD" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf %s "checking for SYSTEMD... " >&6; }</span><br><span> </span><br><span> if test -n "$SYSTEMD_CFLAGS"; then</span><br><span> pkg_cv_SYSTEMD_CFLAGS="$SYSTEMD_CFLAGS"</span><br><span>@@ -36744,7 +36859,7 @@</span><br><span> </span><br><span> </span><br><span> if test $pkg_failed = yes; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then</span><br><span>@@ -36765,7 +36880,7 @@</span><br><span> </span><br><span> </span><br><span> elif test $pkg_failed = untried; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> PBX_SYSTEMD=0</span><br><span>diff --git a/configure.ac b/configure.ac</span><br><span>index a992afd..a1a5fcb 100644</span><br><span>--- a/configure.ac</span><br><span>+++ b/configure.ac</span><br><span>@@ -591,6 +591,7 @@</span><br><span> AST_EXT_LIB_SETUP_OPTIONAL([PJSIP_TSX_LAYER_FIND_TSX2], [pjsip_tsx_layer_find_tsx2 support], [PJPROJECT], [pjsip])</span><br><span> AST_EXT_LIB_SETUP_OPTIONAL([PJSIP_INV_ACCEPT_MULTIPLE_SDP_ANSWERS], [PJSIP INVITE Accept Multiple SDP Answers], [PJPROJECT], [pjsip])</span><br><span> AST_EXT_LIB_SETUP_OPTIONAL([PJSIP_ENDPOINT_COMPACT_FORM], [PJSIP Compact Form Support on Endpoint], [PJPROJECT], [pjsip])</span><br><span style="color: hsl(120, 100%, 40%);">+AST_EXT_LIB_SETUP_OPTIONAL([PJSIP_TLS_TRANSPORT_RESTART], [PJSIP TLS Transport Restart Support], [PJPROJECT], [pjsip])</span><br><span> fi</span><br><span> </span><br><span> AST_EXT_LIB_SETUP([POPT], [popt], [popt])</span><br><span>@@ -2517,6 +2518,7 @@</span><br><span> AST_EXT_LIB_CHECK([PJSIP_INV_SESSION_REF], [pjsip], [pjsip_inv_add_ref], [pjsip.h], [$PJPROJECT_LIB], [$PJPROJECT_CFLAGS])</span><br><span> AST_EXT_LIB_CHECK([PJSIP_AUTH_CLT_DEINIT], [pjsip], [pjsip_auth_clt_deinit], [pjsip.h], [$PJPROJECT_LIB], [$PJPROJECT_CFLAGS])</span><br><span> AST_EXT_LIB_CHECK([PJSIP_TSX_LAYER_FIND_TSX2], [pjsip], [pjsip_tsx_layer_find_tsx2], [pjsip.h], [$PJPROJECT_LIB], [$PJPROJECT_CFLAGS])</span><br><span style="color: hsl(120, 100%, 40%);">+ AST_EXT_LIB_CHECK([PJSIP_TLS_TRANSPORT_RESTART], [pjsip], [pjsip_tls_transport_restart], [pjsip.h], [$PJPROJECT_LIB], [$PJPROJECT_CFLAGS])</span><br><span> fi</span><br><span> fi</span><br><span> </span><br><span>diff --git a/doc/CHANGES-staging/res_pjsip_tls_cert_key_reload.txt b/doc/CHANGES-staging/res_pjsip_tls_cert_key_reload.txt</span><br><span>new file mode 100644</span><br><span>index 0000000..60c9dcd</span><br><span>--- /dev/null</span><br><span>+++ b/doc/CHANGES-staging/res_pjsip_tls_cert_key_reload.txt</span><br><span>@@ -0,0 +1,5 @@</span><br><span style="color: hsl(120, 100%, 40%);">+Subject: res_pjsip</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+TLS transports in res_pjsip can now reload their TLS certificate</span><br><span style="color: hsl(120, 100%, 40%);">+and private key files, provided the filename of them has not</span><br><span style="color: hsl(120, 100%, 40%);">+changed.</span><br><span>diff --git a/include/asterisk/autoconfig.h.in b/include/asterisk/autoconfig.h.in</span><br><span>index 1ff4ae7..202c893 100644</span><br><span>--- a/include/asterisk/autoconfig.h.in</span><br><span>+++ b/include/asterisk/autoconfig.h.in</span><br><span>@@ -19,19 +19,14 @@</span><br><span> of a mutex to its initializer. */</span><br><span> #undef CAN_COMPARE_MUTEX_TO_INIT_VALUE</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Define to 1 if the `closedir' function returns void instead of `int'. */</span><br><span style="color: hsl(120, 100%, 40%);">+/* Define to 1 if the `closedir' function returns void instead of int. */</span><br><span> #undef CLOSEDIR_VOID</span><br><span> </span><br><span> /* Some configure tests will unexpectedly fail if configure is run by a</span><br><span> non-root user. These may be able to be tested at runtime. */</span><br><span> #undef CONFIGURE_RAN_AS_ROOT</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP</span><br><span style="color: hsl(0, 100%, 40%);">- systems. This function is required for `alloca.c' support on those systems.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-#undef CRAY_STACKSEG_END</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* Define to 1 if using `alloca.c'. */</span><br><span style="color: hsl(120, 100%, 40%);">+/* Define to 1 if using 'alloca.c'. */</span><br><span> #undef C_ALLOCA</span><br><span> </span><br><span> /* Define to 1 if anonymous semaphores work. */</span><br><span>@@ -43,11 +38,10 @@</span><br><span> /* Define to 1 if you have the `acosl' function. */</span><br><span> #undef HAVE_ACOSL</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Define to 1 if you have `alloca', as a function or macro. */</span><br><span style="color: hsl(120, 100%, 40%);">+/* Define to 1 if you have 'alloca', as a function or macro. */</span><br><span> #undef HAVE_ALLOCA</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(120, 100%, 40%);">+/* Define to 1 if <alloca.h> works. */</span><br><span> #undef HAVE_ALLOCA_H</span><br><span> </span><br><span> /* Define to 1 if you have the Advanced Linux Sound Architecture library. */</span><br><span>@@ -508,12 +502,12 @@</span><br><span> /* Define to 1 if you have the `memmove' function. */</span><br><span> #undef HAVE_MEMMOVE</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Define to 1 if you have the <memory.h> header file. */</span><br><span style="color: hsl(0, 100%, 40%);">-#undef HAVE_MEMORY_H</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> /* Define to 1 if you have the `memset' function. */</span><br><span> #undef HAVE_MEMSET</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Define to 1 if you have the <minix/config.h> header file. */</span><br><span style="color: hsl(120, 100%, 40%);">+#undef HAVE_MINIX_CONFIG_H</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Define to 1 if you have the mISDN user library. */</span><br><span> #undef HAVE_MISDN</span><br><span> </span><br><span>@@ -674,6 +668,10 @@</span><br><span> /* Define if your system has the PJSIP_TLS_TRANSPORT_PROTO headers. */</span><br><span> #undef HAVE_PJSIP_TLS_TRANSPORT_PROTO</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Define to 1 if PJPROJECT has the PJSIP TLS Transport Restart Support</span><br><span style="color: hsl(120, 100%, 40%);">+ feature. */</span><br><span style="color: hsl(120, 100%, 40%);">+#undef HAVE_PJSIP_TLS_TRANSPORT_RESTART</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Define if your system has HAVE_PJSIP_TRANSPORT_DISABLE_CONNECTION_REUSE</span><br><span> declared */</span><br><span> #undef HAVE_PJSIP_TRANSPORT_DISABLE_CONNECTION_REUSE</span><br><span>@@ -1273,6 +1271,9 @@</span><br><span> /* Define to 1 if you have the `vprintf' function. */</span><br><span> #undef HAVE_VPRINTF</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Define to 1 if you have the <wchar.h> header file. */</span><br><span style="color: hsl(120, 100%, 40%);">+#undef HAVE_WCHAR_H</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Define to 1 if you have the <winsock2.h> header file. */</span><br><span> #undef HAVE_WINSOCK2_H</span><br><span> </span><br><span>@@ -1430,10 +1431,13 @@</span><br><span> STACK_DIRECTION = 0 => direction of growth unknown */</span><br><span> #undef STACK_DIRECTION</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Define to 1 if you have the ANSI C header files. */</span><br><span style="color: hsl(120, 100%, 40%);">+/* Define to 1 if all of the C90 standard headers exist (not just the ones</span><br><span style="color: hsl(120, 100%, 40%);">+ required in a freestanding environment). This macro is provided for</span><br><span style="color: hsl(120, 100%, 40%);">+ backward compatibility; new code need not use it. */</span><br><span> #undef STDC_HEADERS</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */</span><br><span style="color: hsl(120, 100%, 40%);">+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. This</span><br><span style="color: hsl(120, 100%, 40%);">+ macro is obsolete. */</span><br><span> #undef TIME_WITH_SYS_TIME</span><br><span> </span><br><span> /* Define to 1 if your <sys/time.h> declares `struct tm'. */</span><br><span>@@ -1446,32 +1450,93 @@</span><br><span> #ifndef _ALL_SOURCE</span><br><span> # undef _ALL_SOURCE</span><br><span> #endif</span><br><span style="color: hsl(0, 100%, 40%);">-/* Enable GNU extensions on systems that have them. */</span><br><span style="color: hsl(0, 100%, 40%);">-#ifndef _GNU_SOURCE</span><br><span style="color: hsl(0, 100%, 40%);">-# undef _GNU_SOURCE</span><br><span style="color: hsl(0, 100%, 40%);">-#endif</span><br><span style="color: hsl(0, 100%, 40%);">-/* Enable threading extensions on Solaris. */</span><br><span style="color: hsl(0, 100%, 40%);">-#ifndef _POSIX_PTHREAD_SEMANTICS</span><br><span style="color: hsl(0, 100%, 40%);">-# undef _POSIX_PTHREAD_SEMANTICS</span><br><span style="color: hsl(0, 100%, 40%);">-#endif</span><br><span style="color: hsl(0, 100%, 40%);">-/* Enable extensions on HP NonStop. */</span><br><span style="color: hsl(0, 100%, 40%);">-#ifndef _TANDEM_SOURCE</span><br><span style="color: hsl(0, 100%, 40%);">-# undef _TANDEM_SOURCE</span><br><span style="color: hsl(120, 100%, 40%);">+/* Enable general extensions on macOS. */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef _DARWIN_C_SOURCE</span><br><span style="color: hsl(120, 100%, 40%);">+# undef _DARWIN_C_SOURCE</span><br><span> #endif</span><br><span> /* Enable general extensions on Solaris. */</span><br><span> #ifndef __EXTENSIONS__</span><br><span> # undef __EXTENSIONS__</span><br><span> #endif</span><br><span style="color: hsl(120, 100%, 40%);">+/* Enable GNU extensions on systems that have them. */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef _GNU_SOURCE</span><br><span style="color: hsl(120, 100%, 40%);">+# undef _GNU_SOURCE</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+/* Enable X/Open compliant socket functions that do not require linking</span><br><span style="color: hsl(120, 100%, 40%);">+ with -lxnet on HP-UX 11.11. */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef _HPUX_ALT_XOPEN_SOCKET_API</span><br><span style="color: hsl(120, 100%, 40%);">+# undef _HPUX_ALT_XOPEN_SOCKET_API</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+/* Identify the host operating system as Minix.</span><br><span style="color: hsl(120, 100%, 40%);">+ This macro does not affect the system headers' behavior.</span><br><span style="color: hsl(120, 100%, 40%);">+ A future release of Autoconf may stop defining this macro. */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef _MINIX</span><br><span style="color: hsl(120, 100%, 40%);">+# undef _MINIX</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+/* Enable general extensions on NetBSD.</span><br><span style="color: hsl(120, 100%, 40%);">+ Enable NetBSD compatibility extensions on Minix. */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef _NETBSD_SOURCE</span><br><span style="color: hsl(120, 100%, 40%);">+# undef _NETBSD_SOURCE</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+/* Enable OpenBSD compatibility extensions on NetBSD.</span><br><span style="color: hsl(120, 100%, 40%);">+ Oddly enough, this does nothing on OpenBSD. */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef _OPENBSD_SOURCE</span><br><span style="color: hsl(120, 100%, 40%);">+# undef _OPENBSD_SOURCE</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+/* Define to 1 if needed for POSIX-compatible behavior. */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef _POSIX_SOURCE</span><br><span style="color: hsl(120, 100%, 40%);">+# undef _POSIX_SOURCE</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+/* Define to 2 if needed for POSIX-compatible behavior. */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef _POSIX_1_SOURCE</span><br><span style="color: hsl(120, 100%, 40%);">+# undef _POSIX_1_SOURCE</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+/* Enable POSIX-compatible threading on Solaris. */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef _POSIX_PTHREAD_SEMANTICS</span><br><span style="color: hsl(120, 100%, 40%);">+# undef _POSIX_PTHREAD_SEMANTICS</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__</span><br><span style="color: hsl(120, 100%, 40%);">+# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef __STDC_WANT_IEC_60559_BFP_EXT__</span><br><span style="color: hsl(120, 100%, 40%);">+# undef __STDC_WANT_IEC_60559_BFP_EXT__</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef __STDC_WANT_IEC_60559_DFP_EXT__</span><br><span style="color: hsl(120, 100%, 40%);">+# undef __STDC_WANT_IEC_60559_DFP_EXT__</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__</span><br><span style="color: hsl(120, 100%, 40%);">+# undef __STDC_WANT_IEC_60559_FUNCS_EXT__</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__</span><br><span style="color: hsl(120, 100%, 40%);">+# undef __STDC_WANT_IEC_60559_TYPES_EXT__</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef __STDC_WANT_LIB_EXT2__</span><br><span style="color: hsl(120, 100%, 40%);">+# undef __STDC_WANT_LIB_EXT2__</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+/* Enable extensions specified by ISO/IEC 24747:2009. */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef __STDC_WANT_MATH_SPEC_FUNCS__</span><br><span style="color: hsl(120, 100%, 40%);">+# undef __STDC_WANT_MATH_SPEC_FUNCS__</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+/* Enable extensions on HP NonStop. */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef _TANDEM_SOURCE</span><br><span style="color: hsl(120, 100%, 40%);">+# undef _TANDEM_SOURCE</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+/* Enable X/Open extensions. Define to 500 only if necessary</span><br><span style="color: hsl(120, 100%, 40%);">+ to make mbstate_t available. */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef _XOPEN_SOURCE</span><br><span style="color: hsl(120, 100%, 40%);">+# undef _XOPEN_SOURCE</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span> </span><br><span> </span><br><span> /* Define to 1 if running on Darwin. */</span><br><span> #undef _DARWIN_UNLIMITED_SELECT</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Enable large inode numbers on Mac OS X 10.5. */</span><br><span style="color: hsl(0, 100%, 40%);">-#ifndef _DARWIN_USE_64_BIT_INODE</span><br><span style="color: hsl(0, 100%, 40%);">-# define _DARWIN_USE_64_BIT_INODE 1</span><br><span style="color: hsl(0, 100%, 40%);">-#endif</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> /* Number of bits in a file offset, on hosts where this is settable. */</span><br><span> #undef _FILE_OFFSET_BITS</span><br><span> </span><br><span>@@ -1489,16 +1554,6 @@</span><br><span> /* Define for large files, on AIX-style hosts. */</span><br><span> #undef _LARGE_FILES</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Define to 1 if on MINIX. */</span><br><span style="color: hsl(0, 100%, 40%);">-#undef _MINIX</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* Define to 2 if the system does not provide POSIX.1 features except with</span><br><span style="color: hsl(0, 100%, 40%);">- this defined. */</span><br><span style="color: hsl(0, 100%, 40%);">-#undef _POSIX_1_SOURCE</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* Define to 1 if you need to in order for `stat' and other things to work. */</span><br><span style="color: hsl(0, 100%, 40%);">-#undef _POSIX_SOURCE</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> /* Define to empty if `const' does not conform to ANSI C. */</span><br><span> #undef const</span><br><span> </span><br><span>@@ -1520,7 +1575,7 @@</span><br><span> /* Define to `long int' if <sys/types.h> does not define. */</span><br><span> #undef off_t</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Define to `int' if <sys/types.h> does not define. */</span><br><span style="color: hsl(120, 100%, 40%);">+/* Define as a signed integer type capable of holding a process identifier. */</span><br><span> #undef pid_t</span><br><span> </span><br><span> /* Define to `unsigned int' if <sys/types.h> does not define. */</span><br><span>diff --git a/include/asterisk/res_pjsip.h b/include/asterisk/res_pjsip.h</span><br><span>index 1714cff..8c2eef1 100644</span><br><span>--- a/include/asterisk/res_pjsip.h</span><br><span>+++ b/include/asterisk/res_pjsip.h</span><br><span>@@ -50,6 +50,11 @@</span><br><span> #include "asterisk/stasis_channels.h"</span><br><span> #include "asterisk/stasis_endpoints.h"</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef HAVE_PJSIP_TLS_TRANSPORT_RESTART</span><br><span style="color: hsl(120, 100%, 40%);">+/* Needed for knowing if the cert or priv key files changed */</span><br><span style="color: hsl(120, 100%, 40%);">+#include <sys/stat.h></span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #define PJSIP_MINVERSION(m,n,p) (((m << 24) | (n << 16) | (p << 8)) >= PJ_VERSION_NUM)</span><br><span> </span><br><span> #ifndef PJSIP_EXPIRES_NOT_SPECIFIED</span><br><span>@@ -166,6 +171,16 @@</span><br><span> * If true, fail if server certificate cannot verify (TLS only)</span><br><span> */</span><br><span> int verify_server;</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef HAVE_PJSIP_TLS_TRANSPORT_RESTART</span><br><span style="color: hsl(120, 100%, 40%);">+ /*!</span><br><span style="color: hsl(120, 100%, 40%);">+ * The stats information for the certificate file, if configured</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+ struct stat cert_file_stat;</span><br><span style="color: hsl(120, 100%, 40%);">+ /*!</span><br><span style="color: hsl(120, 100%, 40%);">+ * The stats information for the private key file, if configured</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+ struct stat privkey_file_stat;</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span> };</span><br><span> </span><br><span> #define ast_sip_transport_is_nonlocal(transport_state, addr) \</span><br><span>diff --git a/menuselect/autoconfig.h.in b/menuselect/autoconfig.h.in</span><br><span>index 8047d7a..5ab0fcd 100644</span><br><span>--- a/menuselect/autoconfig.h.in</span><br><span>+++ b/menuselect/autoconfig.h.in</span><br><span>@@ -4,19 +4,13 @@</span><br><span> #define MENUSELECT_AUTOCONFIG_H</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP</span><br><span style="color: hsl(0, 100%, 40%);">- systems. This function is required for `alloca.c' support on those systems.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-#undef CRAY_STACKSEG_END</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* Define to 1 if using `alloca.c'. */</span><br><span style="color: hsl(120, 100%, 40%);">+/* Define to 1 if using 'alloca.c'. */</span><br><span> #undef C_ALLOCA</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Define to 1 if you have `alloca', as a function or macro. */</span><br><span style="color: hsl(120, 100%, 40%);">+/* Define to 1 if you have 'alloca', as a function or macro. */</span><br><span> #undef HAVE_ALLOCA</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(120, 100%, 40%);">+/* Define to 1 if <alloca.h> works. */</span><br><span> #undef HAVE_ALLOCA_H</span><br><span> </span><br><span> /* Define to 1 if you have the `asprintf' function. */</span><br><span>@@ -37,9 +31,6 @@</span><br><span> /* Define if your system has the LIBXML2 libraries. */</span><br><span> #undef HAVE_LIBXML2</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Define to 1 if you have the <memory.h> header file. */</span><br><span style="color: hsl(0, 100%, 40%);">-#undef HAVE_MEMORY_H</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> /* Define to 1 if you have the ncurses library. */</span><br><span> #undef HAVE_NCURSES</span><br><span> </span><br><span>@@ -52,6 +43,9 @@</span><br><span> /* Define to 1 if you have the <stdint.h> header file. */</span><br><span> #undef HAVE_STDINT_H</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Define to 1 if you have the <stdio.h> header file. */</span><br><span style="color: hsl(120, 100%, 40%);">+#undef HAVE_STDIO_H</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Define to 1 if you have the <stdlib.h> header file. */</span><br><span> #undef HAVE_STDLIB_H</span><br><span> </span><br><span>@@ -117,7 +111,9 @@</span><br><span> STACK_DIRECTION = 0 => direction of growth unknown */</span><br><span> #undef STACK_DIRECTION</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Define to 1 if you have the ANSI C header files. */</span><br><span style="color: hsl(120, 100%, 40%);">+/* Define to 1 if all of the C90 standard headers exist (not just the ones</span><br><span style="color: hsl(120, 100%, 40%);">+ required in a freestanding environment). This macro is provided for</span><br><span style="color: hsl(120, 100%, 40%);">+ backward compatibility; new code need not use it. */</span><br><span> #undef STDC_HEADERS</span><br><span> </span><br><span> /* Define to `unsigned int' if <sys/types.h> does not define. */</span><br><span>diff --git a/menuselect/configure b/menuselect/configure</span><br><span>index c387d7f..3b35fbc 100755</span><br><span>--- a/menuselect/configure</span><br><span>+++ b/menuselect/configure</span><br><span>@@ -5024,8 +5024,8 @@</span><br><span> if test "x${PBX_LIBXML2}" != "x1" -a "${USE_LIBXML2}" != "no"; then</span><br><span> </span><br><span> pkg_failed=no</span><br><span style="color: hsl(0, 100%, 40%);">-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-printf %s "checking for libxml-2.0... " >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBXML2" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf %s "checking for LIBXML2... " >&6; }</span><br><span> </span><br><span> if test -n "$LIBXML2_CFLAGS"; then</span><br><span> pkg_cv_LIBXML2_CFLAGS="$LIBXML2_CFLAGS"</span><br><span>@@ -5065,7 +5065,7 @@</span><br><span> </span><br><span> </span><br><span> if test $pkg_failed = yes; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then</span><br><span>@@ -5086,7 +5086,7 @@</span><br><span> </span><br><span> </span><br><span> elif test $pkg_failed = untried; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> PBX_LIBXML2=0</span><br><span>@@ -5270,8 +5270,8 @@</span><br><span> if test "x${PBX_GTK2}" != "x1" -a "${USE_GTK2}" != "no"; then</span><br><span> </span><br><span> pkg_failed=no</span><br><span style="color: hsl(0, 100%, 40%);">-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gtk+-2.0" >&5</span><br><span style="color: hsl(0, 100%, 40%);">-printf %s "checking for gtk+-2.0... " >&6; }</span><br><span style="color: hsl(120, 100%, 40%);">+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GTK2" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+printf %s "checking for GTK2... " >&6; }</span><br><span> </span><br><span> if test -n "$GTK2_CFLAGS"; then</span><br><span> pkg_cv_GTK2_CFLAGS="$GTK2_CFLAGS"</span><br><span>@@ -5311,7 +5311,7 @@</span><br><span> </span><br><span> </span><br><span> if test $pkg_failed = yes; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then</span><br><span>@@ -5332,7 +5332,7 @@</span><br><span> </span><br><span> </span><br><span> elif test $pkg_failed = untried; then</span><br><span style="color: hsl(0, 100%, 40%);">- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span style="color: hsl(120, 100%, 40%);">+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5</span><br><span> printf "%s\n" "no" >&6; }</span><br><span> </span><br><span> PBX_GTK2=0</span><br><span>diff --git a/res/res_pjsip/config_transport.c b/res/res_pjsip/config_transport.c</span><br><span>index c740a55..07799e6 100644</span><br><span>--- a/res/res_pjsip/config_transport.c</span><br><span>+++ b/res/res_pjsip/config_transport.c</span><br><span>@@ -407,6 +407,22 @@</span><br><span> memcpy(&transport->external_address, &transport->state->external_signaling_address, sizeof(transport->external_signaling_address));</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef HAVE_PJSIP_TLS_TRANSPORT_RESTART</span><br><span style="color: hsl(120, 100%, 40%);">+static int file_stat_cmp(const struct stat *old_stat, const struct stat *new_stat)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ return old_stat->st_size != new_stat->st_size</span><br><span style="color: hsl(120, 100%, 40%);">+ || old_stat->st_mtime != new_stat->st_mtime</span><br><span style="color: hsl(120, 100%, 40%);">+#if defined(HAVE_STRUCT_STAT_ST_MTIM)</span><br><span style="color: hsl(120, 100%, 40%);">+ || old_stat->st_mtim.tv_nsec != new_stat->st_mtim.tv_nsec</span><br><span style="color: hsl(120, 100%, 40%);">+#elif defined(HAVE_STRUCT_STAT_ST_MTIMENSEC)</span><br><span style="color: hsl(120, 100%, 40%);">+ || old_stat->st_mtimensec != new_stat->st_mtimensec</span><br><span style="color: hsl(120, 100%, 40%);">+#elif defined(HAVE_STRUCT_STAT_ST_MTIMESPEC)</span><br><span style="color: hsl(120, 100%, 40%);">+ || old_stat->st_mtimespec.tv_nsec != new_stat->st_mtimespec.tv_nsec</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static int has_state_changed(struct ast_sip_transport_state *a, struct ast_sip_transport_state *b)</span><br><span> {</span><br><span> if (a->type != b->type) {</span><br><span>@@ -448,6 +464,12 @@</span><br><span> return -1;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef HAVE_PJSIP_TLS_TRANSPORT_RESTART</span><br><span style="color: hsl(120, 100%, 40%);">+ if (file_stat_cmp(&a->cert_file_stat, &b->cert_file_stat) || file_stat_cmp(&a->privkey_file_stat, &b->privkey_file_stat)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return -1;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> return 0;</span><br><span> }</span><br><span> </span><br><span>@@ -562,11 +584,31 @@</span><br><span> </span><br><span> if (!transport->allow_reload && perm_state) {</span><br><span> /* We inherit the transport from perm state, untouched */</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef HAVE_PJSIP_TLS_TRANSPORT_RESTART</span><br><span style="color: hsl(120, 100%, 40%);">+ ast_log(LOG_NOTICE, "Transport '%s' is not fully reloadable, not reloading: protocol, bind, TLS (everything but certificate and private key if filename is unchanged), TCP, ToS, or CoS options.\n", transport_id);</span><br><span style="color: hsl(120, 100%, 40%);">+ /* If this is a TLS transport and the certificate or private key has changed, then restart the transport so it uses the new one */</span><br><span style="color: hsl(120, 100%, 40%);">+ if (transport->type == AST_TRANSPORT_TLS) {</span><br><span style="color: hsl(120, 100%, 40%);">+ if (strcmp(perm_state->transport->cert_file, temp_state->transport->cert_file) ||</span><br><span style="color: hsl(120, 100%, 40%);">+ strcmp(perm_state->transport->privkey_file, temp_state->transport->privkey_file)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ ast_log(LOG_ERROR, "Unable to restart TLS transport '%s' as certificate or private key filename has changed\n",</span><br><span style="color: hsl(120, 100%, 40%);">+ transport_id);</span><br><span style="color: hsl(120, 100%, 40%);">+ } else if (file_stat_cmp(&perm_state->state->cert_file_stat, &temp_state->state->cert_file_stat) ||</span><br><span style="color: hsl(120, 100%, 40%);">+ file_stat_cmp(&perm_state->state->privkey_file_stat, &temp_state->state->privkey_file_stat)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ if (pjsip_tls_transport_restart(perm_state->state->factory, &perm_state->state->host, NULL) != PJ_SUCCESS) {</span><br><span style="color: hsl(120, 100%, 40%);">+ ast_log(LOG_ERROR, "Failed to restart TLS transport '%s'\n", transport_id);</span><br><span style="color: hsl(120, 100%, 40%);">+ } else {</span><br><span style="color: hsl(120, 100%, 40%);">+ sprintf(perm_state->state->factory->info, "%s", transport_id);</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+#else</span><br><span> ast_log(LOG_NOTICE, "Transport '%s' is not fully reloadable, not reloading: protocol, bind, TLS, TCP, ToS, or CoS options.\n", transport_id);</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span> temp_state->state->transport = perm_state->state->transport;</span><br><span> perm_state->state->transport = NULL;</span><br><span> temp_state->state->factory = perm_state->state->factory;</span><br><span> perm_state->state->factory = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> res = PJ_SUCCESS;</span><br><span> } else if (transport->type == AST_TRANSPORT_UDP) {</span><br><span> for (i = 0; i < BIND_TRIES && res != PJ_SUCCESS; i++) {</span><br><span>@@ -660,8 +702,12 @@</span><br><span> }</span><br><span> </span><br><span> if (res == PJ_SUCCESS) {</span><br><span style="color: hsl(120, 100%, 40%);">+ /*</span><br><span style="color: hsl(120, 100%, 40%);">+ * PJSIP uses 100 bytes to store information, and during a restart will repopulate</span><br><span style="color: hsl(120, 100%, 40%);">+ * the field so ensure there is sufficient space - even though we'll revert it after.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span> temp_state->state->factory->info = pj_pool_alloc(</span><br><span style="color: hsl(0, 100%, 40%);">- temp_state->state->factory->pool, (strlen(transport_id) + 1));</span><br><span style="color: hsl(120, 100%, 40%);">+ temp_state->state->factory->pool, (MAX(MAX_OBJECT_FIELD, 100) + 1));</span><br><span> /*</span><br><span> * Store transport id on the factory instance so it can be used</span><br><span> * later to look up the transport state.</span><br><span>@@ -737,18 +783,34 @@</span><br><span> ast_string_field_set(transport, ca_list_file, var->value);</span><br><span> } else if (!strcasecmp(var->name, "ca_list_path")) {</span><br><span> #ifdef HAVE_PJ_SSL_CERT_LOAD_FROM_FILES2</span><br><span style="color: hsl(0, 100%, 40%);">- state->tls.ca_list_path = pj_str((char*)var->value);</span><br><span style="color: hsl(120, 100%, 40%);">+ state->tls.ca_list_path = pj_str((char *)var->value);</span><br><span> ast_string_field_set(transport, ca_list_path, var->value);</span><br><span> #else</span><br><span> ast_log(LOG_WARNING, "Asterisk has been built against a version of pjproject that does not "</span><br><span> "support the 'ca_list_path' option. Please upgrade to version 2.4 or later.\n");</span><br><span> #endif</span><br><span> } else if (!strcasecmp(var->name, "cert_file")) {</span><br><span style="color: hsl(0, 100%, 40%);">- state->tls.cert_file = pj_str((char*)var->value);</span><br><span style="color: hsl(120, 100%, 40%);">+ state->tls.cert_file = pj_str((char *)var->value);</span><br><span> ast_string_field_set(transport, cert_file, var->value);</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef HAVE_PJSIP_TLS_TRANSPORT_RESTART</span><br><span style="color: hsl(120, 100%, 40%);">+ if (stat(var->value, &state->cert_file_stat)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ ast_log(LOG_ERROR, "Failed to stat certificate file '%s' for transport '%s' due to '%s'\n",</span><br><span style="color: hsl(120, 100%, 40%);">+ var->value, ast_sorcery_object_get_id(obj), strerror(errno));</span><br><span style="color: hsl(120, 100%, 40%);">+ return -1;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ ast_sorcery_object_set_has_dynamic_contents(transport);</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span> } else if (!strcasecmp(var->name, "priv_key_file")) {</span><br><span style="color: hsl(0, 100%, 40%);">- state->tls.privkey_file = pj_str((char*)var->value);</span><br><span style="color: hsl(120, 100%, 40%);">+ state->tls.privkey_file = pj_str((char *)var->value);</span><br><span> ast_string_field_set(transport, privkey_file, var->value);</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef HAVE_PJSIP_TLS_TRANSPORT_RESTART</span><br><span style="color: hsl(120, 100%, 40%);">+ if (stat(var->value, &state->privkey_file_stat)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ ast_log(LOG_ERROR, "Failed to stat private key file '%s' for transport '%s' due to '%s'\n",</span><br><span style="color: hsl(120, 100%, 40%);">+ var->value, ast_sorcery_object_get_id(obj), strerror(errno));</span><br><span style="color: hsl(120, 100%, 40%);">+ return -1;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ ast_sorcery_object_set_has_dynamic_contents(transport);</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span> }</span><br><span> </span><br><span> return 0;</span><br><span>diff --git a/res/res_pjsip/pjsip_config.xml b/res/res_pjsip/pjsip_config.xml</span><br><span>index e9abc86..10422bb 100644</span><br><span>--- a/res/res_pjsip/pjsip_config.xml</span><br><span>+++ b/res/res_pjsip/pjsip_config.xml</span><br><span>@@ -1340,7 +1340,8 @@</span><br><span> A path to a .crt or .pem file can be provided. However, only</span><br><span> the certificate is read from the file, not the private key.</span><br><span> The <literal>priv_key_file</literal> option must supply a</span><br><span style="color: hsl(0, 100%, 40%);">- matching key file.</span><br><span style="color: hsl(120, 100%, 40%);">+ matching key file. The certificate file can be reloaded if</span><br><span style="color: hsl(120, 100%, 40%);">+ the filename in configuration remains unchanged.</span><br><span> </para></description></span><br><span> </configOption></span><br><span> <configOption name="cipher"></span><br><span>@@ -1404,6 +1405,11 @@</span><br><span> </configOption></span><br><span> <configOption name="priv_key_file"></span><br><span> <synopsis>Private key file (TLS ONLY, not WSS)</synopsis></span><br><span style="color: hsl(120, 100%, 40%);">+ <description><para></span><br><span style="color: hsl(120, 100%, 40%);">+ A path to a key file can be provided. The private key file</span><br><span style="color: hsl(120, 100%, 40%);">+ can be reloaded if the filename in configuration remains</span><br><span style="color: hsl(120, 100%, 40%);">+ unchanged.</span><br><span style="color: hsl(120, 100%, 40%);">+ </para></description></span><br><span> </configOption></span><br><span> <configOption name="protocol" default="udp"></span><br><span> <synopsis>Protocol to use for SIP traffic</synopsis></span><br><span>diff --git a/third-party/pjproject/configure.m4 b/third-party/pjproject/configure.m4</span><br><span>index 2f26625..fb95220 100644</span><br><span>--- a/third-party/pjproject/configure.m4</span><br><span>+++ b/third-party/pjproject/configure.m4</span><br><span>@@ -131,6 +131,7 @@</span><br><span> AC_DEFINE([HAVE_PJSIP_TRANSPORT_DISABLE_CONNECTION_REUSE], 1, [Define if your system has HAVE_PJSIP_TRANSPORT_DISABLE_CONNECTION_REUSE declared])</span><br><span> AC_DEFINE([HAVE_PJSIP_OAUTH_AUTHENTICATION], 1, [Define if your system has HAVE_PJSIP_OAUTH_AUTHENTICATION declared])</span><br><span> AC_DEFINE([HAVE_PJPROJECT_ON_VALID_ICE_PAIR_CALLBACK], 1, [Define if your system has the on_valid_pair pjnath callback.])</span><br><span style="color: hsl(120, 100%, 40%);">+ AC_DEFINE([HAVE_PJSIP_TLS_TRANSPORT_RESTART], 1, [Define if your system has pjsip_tls_transport_restart support.])</span><br><span> </span><br><span> AC_SUBST([PJPROJECT_BUNDLED])</span><br><span> AC_SUBST([PJPROJECT_BUNDLED_OOT])</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/c/asterisk/+/18987">change 18987</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/c/asterisk/+/18987"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: 16 </div>
<div style="display:none"> Gerrit-Change-Id: I9bc95a6bf791830a9491ad9fa43c17d4010028d0 </div>
<div style="display:none"> Gerrit-Change-Number: 18987 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: Joshua Colp <jcolp@sangoma.com> </div>
<div style="display:none"> Gerrit-Reviewer: Benjamin Keith Ford <bford@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Friendly Automation </div>
<div style="display:none"> Gerrit-Reviewer: George Joseph <gjoseph@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Sean Bright <sean@seanbright.com> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>