Merge pull request #868 from neheb/4 master
authormicmac1 <sebastian_ml@gmx.net>
Wed, 1 May 2024 16:21:40 +0000 (18:21 +0200)
committerGitHub <noreply@github.com>
Wed, 1 May 2024 16:21:40 +0000 (18:21 +0200)
libosip2: update to 5.3.1

libs/libosip2/Makefile
libs/libsrtp/Makefile
net/coturn/Makefile
net/coturn/patches/02-fix-flags-dupes.patch
net/coturn/patches/100-coturn-4.6.0-openssl3-from-gentoo.patch [deleted file]
net/sipgrep/Makefile
net/sipgrep/patches/001-Move-to-PCRE2-from-PCRE.patch [deleted file]

index 1fadf0669ab5f9d2c8e0983274b36e0661635044..e73832d0cdc11a4298dea6cabbb38fe31c0a24df 100644 (file)
@@ -8,20 +8,21 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libosip2
-PKG_VERSION:=5.3.0
+PKG_VERSION:=5.3.1
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@GNU/osip
-PKG_HASH:=f4725916c22cf514969efb15c3c207233d64739383f7d42956038b78f6cae8c8
+PKG_HASH:=fe82fe841608266ac15a5c1118216da00c554d5006e2875a8ac3752b1e6adc79
+
+PKG_LICENSE:=LGPL-2.1-or-later
+PKG_LICENSE_FILES:=COPYING
+PKG_CPE_ID:=cpe:/a:gnu:osip
 
 PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
 PKG_BUILD_PARALLEL:=1
 
-PKG_LICENSE:=LGPL-2.1+
-PKG_LICENSE_FILES:=COPYING
-
 include $(INCLUDE_DIR)/package.mk
 
 define Package/libosip2
index 337fc6b7fcc5a4d5979c1e01c6c68a7e2c527eac..aad96028e07a24c0d29f633d19703b60a6aff3f5 100644 (file)
@@ -8,16 +8,17 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libsrtp
-PKG_VERSION:=2.4.2
-PKG_RELEASE:=2
+PKG_VERSION:=2.6.0
+PKG_RELEASE:=1
 
-PKG_SOURCE:=libsrtp-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://codeload.github.com/cisco/libsrtp/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=3b1bcb14ebda572b04b9bdf07574a449c84cb924905414e4d94e62837d22b628
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_VERSION:=v$(PKG_VERSION)
+PKG_SOURCE_URL:=https://github.com/cisco/libsrtp
+PKG_MIRROR_HASH:=7ee6ba7138e7e3c4b16dbb6aa1cd639dcca517f2aa3f7dafb2cf245d932e8448
 
+PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>
 PKG_LICENSE:=BSD-3-Clause
 PKG_LICENSE_FILES:=LICENSE
-PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>
 
 include $(INCLUDE_DIR)/package.mk
 
index ef57cf14e2c7a9ba2582503dc22840398da2993e..685225b5218e33d316511040c120862302894dde 100644 (file)
@@ -8,21 +8,21 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=coturn
-PKG_VERSION:=4.6.1
+PKG_VERSION:=4.6.2
 PKG_RELEASE:=1
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://codeload.github.com/coturn/coturn/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=8fba86e593ed74adc46e002e925cccff2819745371814f42465fbe717483f1d8
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_VERSION:=$(PKG_VERSION)
+PKG_SOURCE_URL:=https://github.com/coturn/coturn
+PKG_MIRROR_HASH:=55a7d63edfde6548cd6d6f1b62f6997beeebc66e0ff07b0afd175829434cbf3a
 
+PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>, Sebastian Kemper <sebastian_ml@gmx.net>
 PKG_LICENSE:=BSD-COTURN-CITRIX COMBINED-CITRIX-VIVOCHA-BSD MIT-HASH
 PKG_LICENSE_FILES:=LICENSE src/apps/relay/dbdrivers/* src/server/ns_turn_khash.h
-
-PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>, Sebastian Kemper <sebastian_ml@gmx.net>
-
-PKG_BUILD_PARALLEL:=1
+PKG_CPE_ID:=cpe:/a:coturn_project:coturn
 
 PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
 
 PKG_CONFIG_DEPENDS+= \
        CONFIG_COTURN_ENABLE_MYSQL \
@@ -30,8 +30,6 @@ PKG_CONFIG_DEPENDS+= \
        CONFIG_COTURN_ENABLE_REDIS \
        CONFIG_COTURN_ENABLE_SQLITE
 
-PKG_CPE_ID:=cpe:/a:coturn_project:coturn
-
 include $(INCLUDE_DIR)/package.mk
 include $(INCLUDE_DIR)/nls.mk
 
index 516ec24edcb38caf4d6a2506cdfb125810a55b74..b42f26ddca924ab7db30787fa2c49a27f1a11f56 100644 (file)
@@ -1,6 +1,6 @@
 --- a/configure
 +++ b/configure
-@@ -1047,9 +1047,9 @@ ${ECHO_CMD} "# Generated by configure sc
+@@ -1049,9 +1049,9 @@ ${ECHO_CMD} "# Generated by configure sc
  ${ECHO_CMD} "#################################" >> Makefile
  ${ECHO_CMD} "ECHO_CMD = ${ECHO_CMD}" >> Makefile
  ${ECHO_CMD} "CC = ${CC}" >> Makefile
diff --git a/net/coturn/patches/100-coturn-4.6.0-openssl3-from-gentoo.patch b/net/coturn/patches/100-coturn-4.6.0-openssl3-from-gentoo.patch
deleted file mode 100644 (file)
index 42f9dd2..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-https://github.com/coturn/coturn/commit/9af9f6306ab73c3403f9e11086b1936e9148f7de
-https://github.com/coturn/coturn/commit/4ce784a8781ab086c150e2b9f5641b1a37fd9b31
-https://github.com/coturn/coturn/commit/9370bb742d976166a51032760da1ecedefb92267
-https://github.com/coturn/coturn/commit/d72a2a8920b80ce66b36e22b2c22f308ad06c424
-
-From 9af9f6306ab73c3403f9e11086b1936e9148f7de Mon Sep 17 00:00:00 2001
-From: Pavel Punsky <eakraly@users.noreply.github.com>
-Date: Wed, 14 Sep 2022 03:29:26 -0700
-Subject: [PATCH] Fix renegotiation flag for older version of openssl (#978)
-
-`SSL_OP_NO_RENEGOTIATION` is only supported in openssl-1.1.0 and above
-Older versions have `SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS `
-
-Fixes #977 and #952
-
-Test:
-Build in a docker container running running openssl-1.0.2g (ubuntu
-16.04) successfully (without the fix getting the same errors)
---- a/src/apps/relay/dtls_listener.c
-+++ b/src/apps/relay/dtls_listener.c
-@@ -295,8 +295,17 @@ static ioa_socket_handle dtls_server_inp
-       SSL_set_accept_state(connecting_ssl);
-       SSL_set_bio(connecting_ssl, NULL, wbio);
--      SSL_set_options(connecting_ssl, SSL_OP_COOKIE_EXCHANGE | SSL_OP_NO_RENEGOTIATION);
--
-+      SSL_set_options(connecting_ssl, SSL_OP_COOKIE_EXCHANGE
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
-+#if defined(SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS)
-+              | SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS
-+#endif
-+#else
-+#if defined(SSL_OP_NO_RENEGOTIATION)
-+              | SSL_OP_NO_RENEGOTIATION
-+#endif
-+#endif
-+      );
-       SSL_set_max_cert_list(connecting_ssl, 655350);
-       ioa_socket_handle rc = dtls_accept_client_connection(server, s, connecting_ssl,
-@@ -581,7 +590,17 @@ static int create_new_connected_udp_sock
-               SSL_set_bio(connecting_ssl, NULL, wbio);
--              SSL_set_options(connecting_ssl, SSL_OP_COOKIE_EXCHANGE | SSL_OP_NO_RENEGOTIATION);
-+              SSL_set_options(connecting_ssl, SSL_OP_COOKIE_EXCHANGE
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
-+#if defined(SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS)
-+                      | SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS
-+#endif
-+#else
-+#if defined(SSL_OP_NO_RENEGOTIATION)
-+                      | SSL_OP_NO_RENEGOTIATION
-+#endif
-+#endif
-+              );
-               SSL_set_max_cert_list(connecting_ssl, 655350);
-               int rc = ssl_read(ret->fd, connecting_ssl, server->sm.m.sm.nd.nbh,
---- a/src/apps/relay/ns_ioalib_engine_impl.c
-+++ b/src/apps/relay/ns_ioalib_engine_impl.c
-@@ -1428,7 +1428,17 @@ static void set_socket_ssl(ioa_socket_ha
-               if(ssl) {
-                       SSL_set_app_data(ssl,s);
-                       SSL_set_info_callback(ssl, (ssl_info_callback_t)ssl_info_callback);
--                      SSL_set_options(ssl, SSL_OP_NO_RENEGOTIATION);
-+                      SSL_set_options(ssl, 
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
-+#if defined(SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS)
-+                              SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS
-+#endif
-+#else
-+#if defined(SSL_OP_NO_RENEGOTIATION)
-+                              SSL_OP_NO_RENEGOTIATION
-+#endif
-+#endif
-+                      );
-               }
-       }
- }
-@@ -1864,7 +1874,11 @@ int ssl_read(evutil_socket_t fd, SSL* ss
-       } else if (!if1 && if2) {
-+#if (OPENSSL_VERSION_NUMBER >= 0x30000000L)
-+              if(verbose && SSL_get1_peer_certificate(ssl)) {
-+#else
-               if(verbose && SSL_get_peer_certificate(ssl)) {
-+#endif
-                 printf("\n------------------------------------------------------------\n");
-                 X509_NAME_print_ex_fp(stdout, X509_get_subject_name(SSL_get_peer_certificate(ssl)), 1,
-                                       XN_FLAG_MULTILINE);
---- a/src/apps/uclient/startuclient.c
-+++ b/src/apps/uclient/startuclient.c
-@@ -138,7 +138,11 @@ static SSL* tls_connect(ioa_socket_raw f
-               if (rc > 0) {
-                 TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO,"%s: client session connected with cipher %s, method=%s\n",__FUNCTION__,
-                                 SSL_get_cipher(ssl),turn_get_ssl_method(ssl,NULL));
-+#if (OPENSSL_VERSION_NUMBER >= 0x30000000L)
-+                if(clnet_verbose && SSL_get1_peer_certificate(ssl)) {
-+#else
-                 if(clnet_verbose && SSL_get_peer_certificate(ssl)) {
-+#endif
-                         TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "------------------------------------------------------------\n");
-                       X509_NAME_print_ex_fp(stdout, X509_get_subject_name(SSL_get_peer_certificate(ssl)), 1,
-                                                               XN_FLAG_MULTILINE);
---- a/src/client/ns_turn_msg.c
-+++ b/src/client/ns_turn_msg.c
-@@ -248,12 +248,22 @@ int stun_produce_integrity_key_str(const
-               if (FIPS_mode()) {
-                       EVP_MD_CTX_set_flags(&ctx,EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
-               }
--#endif
-+#endif // defined EVP_MD_CTX_FLAG_NON_FIPS_ALLOW && !defined(LIBRESSL_VERSION_NUMBER)
-               EVP_DigestInit_ex(&ctx,EVP_md5(), NULL);
-               EVP_DigestUpdate(&ctx,str,strl);
-               EVP_DigestFinal(&ctx,key,&keylen);
-               EVP_MD_CTX_cleanup(&ctx);
--#else
-+#elif OPENSSL_VERSION_NUMBER >= 0x30000000L
-+              unsigned int keylen = 0;
-+              EVP_MD_CTX *ctx = EVP_MD_CTX_new();
-+              if (EVP_default_properties_is_fips_enabled(NULL)) {
-+                      EVP_default_properties_enable_fips(NULL, 0);
-+              }
-+              EVP_DigestInit_ex(ctx,EVP_md5(), NULL);
-+              EVP_DigestUpdate(ctx,str,strl);
-+              EVP_DigestFinal(ctx,key,&keylen);
-+              EVP_MD_CTX_free(ctx);
-+#else // OPENSSL_VERSION_NUMBER < 0x10100000L
-               unsigned int keylen = 0;
-               EVP_MD_CTX *ctx = EVP_MD_CTX_new();
- #if defined EVP_MD_CTX_FLAG_NON_FIPS_ALLOW && ! defined(LIBRESSL_VERSION_NUMBER)
-@@ -265,7 +275,7 @@ int stun_produce_integrity_key_str(const
-               EVP_DigestUpdate(ctx,str,strl);
-               EVP_DigestFinal(ctx,key,&keylen);
-               EVP_MD_CTX_free(ctx);
--#endif
-+#endif // OPENSSL_VERSION_NUMBER < 0X10100000L
-               ret = 0;
-       }
---- a/src/apps/relay/netengine.c
-+++ b/src/apps/relay/netengine.c
-@@ -31,13 +31,7 @@
- #include "mainrelay.h"
- //////////// Backward compatibility with OpenSSL 1.0.x //////////////
--#define HAVE_OPENSSL11_API (!(OPENSSL_VERSION_NUMBER < 0x10100001L || defined LIBRESSL_VERSION_NUMBER))
--
--#ifndef HAVE_SSL_CTX_UP_REF
--#define HAVE_SSL_CTX_UP_REF HAVE_OPENSSL11_API
--#endif
--
--#if !HAVE_SSL_CTX_UP_REF
-+#if (OPENSSL_VERSION_NUMBER < 0x10100001L || defined LIBRESSL_VERSION_NUMBER)
- #define SSL_CTX_up_ref(ctx) CRYPTO_add(&(ctx)->references, 1, CRYPTO_LOCK_SSL_CTX)
- #endif
---- a/src/apps/relay/mainrelay.c
-+++ b/src/apps/relay/mainrelay.c
-@@ -1353,7 +1353,6 @@ static void set_option(int c, char *valu
-               STRCPY(turn_params.relay_ifname, value);
-               break;
-       case 'm':
--#if defined(OPENSSL_THREADS)
-               if(atoi(value)>MAX_NUMBER_OF_GENERAL_RELAY_SERVERS) {
-                       TURN_LOG_FUNC(TURN_LOG_LEVEL_WARNING, "WARNING: max number of relay threads is 128.\n");
-                       turn_params.general_relay_servers_number = MAX_NUMBER_OF_GENERAL_RELAY_SERVERS;
-@@ -1362,9 +1361,6 @@ static void set_option(int c, char *valu
-               } else {
-                       turn_params.general_relay_servers_number = atoi(value);
-               }
--#else
--              TURN_LOG_FUNC(TURN_LOG_LEVEL_WARNING, "WARNING: OpenSSL version is too old OR does not support threading,\n I am using single thread for relaying.\n");
--#endif
-               break;
-       case 'd':
-               STRCPY(turn_params.listener_ifname, value);
-@@ -2640,9 +2636,8 @@ int main(int argc, char **argv)
- ////////// OpenSSL locking ////////////////////////////////////////
--#if defined(OPENSSL_THREADS)
--
--static char some_buffer[65536];
-+#if defined(OPENSSL_THREADS) 
-+#if OPENSSL_VERSION_NUMBER < OPENSSL_VERSION_1_1_0
- //array larger than anything that OpenSSL may need:
- static pthread_mutex_t mutex_buf[256];
-@@ -2660,76 +2655,52 @@ void coturn_locking_function(int mode, i
-   }
- }
--#if OPENSSL_VERSION_NUMBER >= 0x10000000L
- void coturn_id_function(CRYPTO_THREADID *ctid);
- void coturn_id_function(CRYPTO_THREADID *ctid)
- {
-       UNUSED_ARG(ctid);
-     CRYPTO_THREADID_set_numeric(ctid, (unsigned long)pthread_self());
- }
--#else
--unsigned long coturn_id_function(void);
--unsigned long coturn_id_function(void)
--{
--    return (unsigned long)pthread_self();
--}
--#endif
--
--#endif
- static int THREAD_setup(void) {
--
--#if defined(OPENSSL_THREADS)
--
--      int i;
--
--      some_buffer[0] = 0;
--
-+    int i;
-       for (i = 0; i < CRYPTO_num_locks(); i++) {
-               pthread_mutex_init(&(mutex_buf[i]), NULL);
-       }
-       mutex_buf_initialized = 1;
--
--#if OPENSSL_VERSION_NUMBER >= 0x10000000L && OPENSSL_VERSION_NUMBER <= OPENSSL_VERSION_1_1_1
-       CRYPTO_THREADID_set_callback(coturn_id_function);
--#else
--      CRYPTO_set_id_callback(coturn_id_function);
--#endif
--
-       CRYPTO_set_locking_callback(coturn_locking_function);
--#endif
--
-       return 1;
- }
- int THREAD_cleanup(void);
- int THREAD_cleanup(void) {
-+    int i;
--#if defined(OPENSSL_THREADS)
--
--  int i;
-+    if (!mutex_buf_initialized)
-+        return 0;
--  if (!mutex_buf_initialized)
--    return 0;
-+    CRYPTO_THREADID_set_callback(NULL);
-+    CRYPTO_set_locking_callback(NULL);
-+    for (i = 0; i < CRYPTO_num_locks(); i++) {
-+        pthread_mutex_destroy(&(mutex_buf[i]));
-+    }
--#if OPENSSL_VERSION_NUMBER >= 0x10000000L && OPENSSL_VERSION_NUMBER <= OPENSSL_VERSION_1_1_1
--      CRYPTO_THREADID_set_callback(NULL);
-+    mutex_buf_initialized = 0;
-+  return 1;
-+}
- #else
--      CRYPTO_set_id_callback(NULL);
--#endif
--
--  CRYPTO_set_locking_callback(NULL);
--  for (i = 0; i < CRYPTO_num_locks(); i++) {
--        pthread_mutex_destroy(&(mutex_buf[i]));
--  }
--
--  mutex_buf_initialized = 0;
--
--#endif
-+static int THREAD_setup(void) {
-+    return 1;
-+}
--  return 1;
-+int THREAD_cleanup(void);
-+int THREAD_cleanup(void){
-+    return 1;
- }
-+#endif /* OPENSSL_VERSION_NUMBER < OPENSSL_VERSION_1_1_0 */
-+#endif /* defined(OPENSSL_THREADS) */
- static void adjust_key_file_name(char *fn, const char* file_title, int critical)
- {
index f8a2fca444897c71c257d0823172133b7b50b711..e5cadc6aa201c8dd7d46a2e8f43bba84e812fdb5 100644 (file)
@@ -9,21 +9,21 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=sipgrep
+PKG_VERSION:=2.2.0
+PKG_RELEASE:=1
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_VERSION:=$(PKG_VERSION)
+PKG_SOURCE_URL:=https://github.com/sipcapture/sipgrep
+PKG_MIRROR_HASH:=4fe322d672d5c78160ddf0f0bf599a14b2fc504437262ad08a4003fe66f3e4b5
+
 PKG_MAINTAINER:=Sebastian Kemper <sebastian_ml@gmx.net>
 PKG_LICENSE:=GPL-3.0
 PKG_LICENSE_FILES:=COPYING
 
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/sipcapture/sipgrep.git
-PKG_SOURCE_VERSION:=1cc00079cd80310f7e8b1a696e9a02b8a2b25e04
-PKG_SOURCE_DATE=2019-06-27
-PKG_RELEASE:=3
-PKG_MIRROR_HASH:=2c90b4e262be7270bcc9a2de975adbe8f67dee5ff0c30b397036f2e69229f515
-
-PKG_BUILD_PARALLEL:=1
 PKG_FIXUP:=autoreconf
-
 PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
 
 PKG_CONFIG_DEPENDS:=CONFIG_IPV6
 
@@ -44,7 +44,7 @@ troubleshoot SIP signaling over IP networks, allowing the user to
 specify extended regular expressions matching against SIP headers.
 endef
 
-CONFIGURE_ARGS+=$(if $(CONFIG_IPV6),--enable-ipv6)
+CONFIGURE_ARGS+=$(if $(CONFIG_IPV6),en,dis)able-ipv6
 
 define Package/sipgrep/install
        $(INSTALL_DIR) $(1)/usr/bin
diff --git a/net/sipgrep/patches/001-Move-to-PCRE2-from-PCRE.patch b/net/sipgrep/patches/001-Move-to-PCRE2-from-PCRE.patch
deleted file mode 100644 (file)
index 524ae07..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-From fea1a27f5fbef28243620fa66909d2d04c81e140 Mon Sep 17 00:00:00 2001
-From: Christian Marangi <ansuelsmth@gmail.com>
-Date: Thu, 2 Nov 2023 21:16:07 +0100
-Subject: [PATCH] Move to PCRE2 from PCRE
-
-Move to PCRE2 as PCRE is EOL and won't receive any security updates
-anymore.
-
-Convert each function to PCRE2 equivalent and update configure.ac to
-USE_PCRE2.
-
-Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
----
- configure.ac    | 20 +++++++++---------
- src/config.h.in |  4 ++--
- src/sipgrep.c   | 56 ++++++++++++++++++++++++++++++-------------------
- 3 files changed, 47 insertions(+), 33 deletions(-)
-
---- a/configure.ac
-+++ b/configure.ac
-@@ -26,8 +26,8 @@ AC_ARG_ENABLE(ssl,
- AC_MSG_RESULT([$SSL])
- AC_SUBST([SSL])
--usePCRE=yes
--AC_SUBST([PCRE])
-+usePCRE2=yes
-+AC_SUBST([PCRE2])
- useNCURSES=no
- AC_MSG_CHECKING([whether to use ncurses])
-@@ -169,15 +169,15 @@ AC_SUBST(PCAP_LIBS)
- dnl
--dnl check for pcre library
-+dnl check for pcre2 library
- dnl
--# Checks for libpcre
--AC_CHECKING([for pcre Library and Header files])
--AC_CHECK_HEADER([pcre.h], ,AC_MSG_ERROR([Could not find pcre headers !]))
--AC_CHECK_LIB([pcre], [pcre_compile], ,[AC_MSG_ERROR([libpcre required])])
--AC_DEFINE(USE_PCRE, 1, [Use PCRE library])
--AC_SUBST(PCRE_LIBS)
-+# Checks for libpcre2
-+AC_CHECKING([for pcre2 Library and Header files])
-+AC_CHECK_HEADER([pcre2.h], ,AC_MSG_ERROR([Could not find pcre2 headers !]), [#define PCRE2_CODE_UNIT_WIDTH 8])
-+AC_CHECK_LIB([pcre2-8], [pcre2_compile_8], ,[AC_MSG_ERROR([libpcre2 required])])
-+AC_DEFINE(USE_PCRE2, 1, [Use PCRE2 library])
-+AC_SUBST(PCRE2_LIBS)
- dnl
-@@ -271,6 +271,6 @@ echo Ncurses support............. : $use
- echo
- echo Build with REDIS............ : $useRedis
--echo Build with PCRE............. : $usePCRE
-+echo Build with PCRE............. : $usePCRE2
- echo
---- a/src/config.h.in
-+++ b/src/config.h.in
-@@ -152,8 +152,8 @@
- /* Use NCURSES library */
- #undef USE_NCURSES
--/* Use PCRE library */
--#undef USE_PCRE
-+/* Use PCRE2 library */
-+#undef USE_PCRE2
- /* Use REDIS library */
- #undef USE_REDIS
---- a/src/sipgrep.c
-+++ b/src/sipgrep.c
-@@ -88,7 +88,8 @@
- #include <netdb.h>
--#include <pcre.h>
-+#define PCRE2_CODE_UNIT_WIDTH 8
-+#include <pcre2.h>
- /* reasambling */
- #include "include/ipreasm.h"
-@@ -149,17 +150,18 @@ struct statistics_table *statstable = NU
-  * GNU PCRE
-  */
--int32_t err_offset;
--char *re_err = NULL;
-+PCRE2_UCHAR re_err[128];
-+PCRE2_SIZE err_offset;
-+uint32_t err_code;
--pcre *pattern = NULL;
--pcre_extra *pattern_extra = NULL;
-+pcre2_code *pattern = NULL;
- /*
-  * Matching
-  */
--char *match_data = NULL, *bin_data = NULL;
-+PCRE2_SPTR match_data = NULL;
-+char *bin_data = NULL;
- uint16_t match_len = 0;
- int8_t (*match_func) () = &blank_match_func;
-@@ -550,13 +552,13 @@ main (int argc, char **argv)
-   if (match_data) {
--    uint32_t pcre_options = PCRE_UNGREEDY;
-+    uint32_t pcre2_options = PCRE2_UNGREEDY;
-     if (re_ignore_case)
--      pcre_options |= PCRE_CASELESS;
-+      pcre2_options |= PCRE2_CASELESS;
-     if (re_multiline_match)
--      pcre_options |= PCRE_DOTALL;
-+      pcre2_options |= PCRE2_DOTALL;
-     if (re_match_word) {
-       char *word_regex = malloc (strlen (match_data) * 3 + strlen (WORD_REGEX));
-@@ -564,14 +566,21 @@ main (int argc, char **argv)
-       match_data = word_regex;
-     }
--    pattern = pcre_compile (match_data, pcre_options, (const char **) &re_err, &err_offset, 0);
-+    pattern = pcre2_compile (match_data, PCRE2_ZERO_TERMINATED, pcre2_options, &err_code, &err_offset, NULL);
-     if (!pattern) {
-+      pcre2_get_error_message (err_code, re_err, 128);
-       fprintf (stderr, "compile failed: %s\n", re_err);
-       clean_exit (-1);
-     }
--    pattern_extra = pcre_study (pattern, 0, (const char **) &re_err);
-+    err_code = pcre2_jit_compile (pattern, PCRE2_JIT_COMPLETE);
-+
-+    if (err_code < 0) {
-+      pcre2_get_error_message(err_code, re_err, 128);
-+      fprintf (stderr, "compile failed: %s\n", re_err);
-+      clean_exit (-1);
-+    }
-     match_func = &re_match_func;
-@@ -1653,21 +1662,28 @@ dump_packet (struct pcap_pkthdr *h, u_ch
- int8_t
- re_match_func (unsigned char *data, uint32_t len)
- {
-+  pcre2_match_data *match_data;
-+
-+  match_data = pcre2_match_data_create_from_pattern(pattern, NULL);
--  switch (pcre_exec (pattern, 0, (char *)data, (int32_t) len, 0, 0, 0, 0)) {
--  case PCRE_ERROR_NULL:
--  case PCRE_ERROR_BADOPTION:
--  case PCRE_ERROR_BADMAGIC:
--  case PCRE_ERROR_UNKNOWN_NODE:
--  case PCRE_ERROR_NOMEMORY:
-+  switch (pcre2_match (pattern, (PCRE2_SPTR)data, len, 0, 0, match_data, 0)) {
-+  case PCRE2_ERROR_NULL:
-+  case PCRE2_ERROR_BADOPTION:
-+  case PCRE2_ERROR_BADMAGIC:
-+  case PCRE2_ERROR_INTERNAL:
-+  case PCRE2_ERROR_NOMEMORY:
-+    pcre2_match_data_free(match_data);
-     perror ("she's dead, jim\n");
-     clean_exit (-2);
-     break;
--  case PCRE_ERROR_NOMATCH:
-+  case PCRE2_ERROR_NOMATCH:
-+    pcre2_match_data_free(match_data);
-     return 0;
-   }
-+  pcre2_match_data_free(match_data);
-+
-   if (max_matches)
-     matches++;
-@@ -2125,9 +2141,7 @@ clean_exit (int32_t sig)
-     printf ("exit\n");
-   if (pattern)
--    pcre_free (pattern);
--  if (pattern_extra)
--    pcre_free (pattern_extra);
-+    pcre2_code_free (pattern);
-   if (bin_data)
-     free (bin_data);