Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package rabbitmq-c for openSUSE:Factory 
checked in at 2021-05-07 16:46:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rabbitmq-c (Old)
 and      /work/SRC/openSUSE:Factory/.rabbitmq-c.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rabbitmq-c"

Fri May  7 16:46:08 2021 rev:5 rq:891305 version:0.11.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/rabbitmq-c/rabbitmq-c.changes    2020-12-29 
15:49:24.284361951 +0100
+++ /work/SRC/openSUSE:Factory/.rabbitmq-c.new.2988/rabbitmq-c.changes  
2021-05-07 16:46:34.204107000 +0200
@@ -1,0 +2,17 @@
+Fri May  7 10:18:50 UTC 2021 - Ferdinand Thiessen <r...@fthiessen.de>
+
+- Update to version 0.11.0
+  * Added rabbitmq-c-config.cmake
+  * Add amqp_set_ssl_engine API to allow setting OpenSSL engine
+  * Add amqp_ssl_socket_set_key_engine API to allow setting OpenSSL
+    engine
+  * Add support use of password-protected SSL keys
+  * Update OpenSSL library initialization to current best practices
+  * Updates to OpenSSL to support v3.0.0
+  * Restore correct non-blocking behavior using OpenSSL v1.1.1
+  * Fix invalid format in generated pkg-config file
+  * Fix invalid AMQP_STATUS_HEARTBEAT_TIMEOUT
+  * Fix incorrect port when using --server flag in CLI tools
+- Drop upstream merged reproducible.patch
+
+-------------------------------------------------------------------

Old:
----
  rabbitmq-c-0.10.0.tar.gz
  reproducible.patch

New:
----
  rabbitmq-c-0.11.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rabbitmq-c.spec ++++++
--- /var/tmp/diff_new_pack.fHntvK/_old  2021-05-07 16:46:34.688104807 +0200
+++ /var/tmp/diff_new_pack.fHntvK/_new  2021-05-07 16:46:34.692104789 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package rabbitmq-c
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 # Copyright (c) 2012-2015 Remi Collet
 #
 # All modifications and additions to the file contributed by third parties
@@ -20,16 +20,14 @@
 %global libname     librabbitmq
 %global majsonum    4
 Name:           rabbitmq-c
-Version:        0.10.0
+Version:        0.11.0
 Release:        0
 Summary:        Client library for AMQP
 License:        MIT
 Group:          Development/Libraries/C and C++
 URL:            https://github.com/alanxz/rabbitmq-c
 Source0:        
https://github.com/alanxz/rabbitmq-c/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
-# PATCH-FIX-UPSTREAM https://github.com/alanxz/rabbitmq-c/pull/638 
-Patch0:         reproducible.patch
-BuildRequires:  cmake > 2.8
+BuildRequires:  cmake > 2.8.12
 BuildRequires:  gcc
 BuildRequires:  openssl-devel
 # For tools
@@ -76,7 +74,6 @@
 
 %prep
 %setup -q
-%patch0 -p1
 
 %build
 # static lib required for tests
@@ -126,13 +123,14 @@
 %postun -n %{libname}%{majsonum} -p /sbin/ldconfig
 
 %files -n %{libname}%{majsonum}
-%doc LICENSE-MIT
+%license LICENSE-MIT
 %{_libdir}/%{libname}.so.%{majsonum}*
 
 %files -n %{libname}-devel
 %doc AUTHORS THANKS TODO *.md examples
 %{_libdir}/%{libname}.so
 %{_includedir}/amqp*
+%{_libdir}/cmake/%{name}
 %{_libdir}/pkgconfig/%{libname}.pc
 
 %files -n %{name}-tools

++++++ rabbitmq-c-0.10.0.tar.gz -> rabbitmq-c-0.11.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/.github/workflows/ci.yml 
new/rabbitmq-c-0.11.0/.github/workflows/ci.yml
--- old/rabbitmq-c-0.10.0/.github/workflows/ci.yml      1970-01-01 
01:00:00.000000000 +0100
+++ new/rabbitmq-c-0.11.0/.github/workflows/ci.yml      2021-04-01 
05:22:03.000000000 +0200
@@ -0,0 +1,74 @@
+name: CI
+
+on: 
+  # Run the jobs on either push or a pull_request, but not both.
+  push:
+    branches:
+    - master
+  pull_request:
+    branches:
+    - master
+
+jobs:
+  build-linux:
+    runs-on: ubuntu-latest
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - compiler: gcc
+            config: cmake
+          - compiler: clang
+            config: cmake
+          - compiler: clang
+            config: asan
+          - compiler: clang
+            config: tsan
+          - compiler: clang
+            config: format
+          - compiler: clang
+            config: scan-build
+
+    steps:
+    - uses: actions/checkout@v2
+      with:
+        submodules: true
+
+    - name: Configure Build & Test
+      shell: bash
+      env:
+        CC: ${{ matrix.compiler }}
+      run: ./travis.sh ${{ matrix.config }}
+
+  build-macox:
+    runs-on: macos-latest
+    steps:
+    - uses: actions/checkout@v2
+      with:
+        submodules: true
+    
+    - name: Configure Build & Test
+      shell: bash
+      run: ./travis.sh macos
+
+  build-win32:
+    runs-on: windows-latest
+    steps:
+    - uses: actions/checkout@v2
+      with:
+        submodules: true
+    - uses: actions/cache@v2
+      with:
+        path: c:\Users\runneradmin\AppData\Local\Temp\chocolatey
+        # This caches the cache, no need to make sure that this is invalidated
+        # chocolatey will do that for us.
+        key: chocolatey-cache
+    - name: Install Prerequisites
+      run: choco install openssl
+    - name: Configure Build & Test
+      shell: bash
+      run: |
+        cmake -E make_directory build/
+        cmake -S . -B build/
+        cmake --build build/ --config Debug --target INSTALL
+        ctest -V ./build/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/.gitignore 
new/rabbitmq-c-0.11.0/.gitignore
--- old/rabbitmq-c-0.10.0/.gitignore    2019-12-02 05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/.gitignore    2021-04-01 05:22:03.000000000 +0200
@@ -71,3 +71,4 @@
 *.sw?
 .#*
 \#*#
+.venv/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/.travis.yml 
new/rabbitmq-c-0.11.0/.travis.yml
--- old/rabbitmq-c-0.10.0/.travis.yml   2019-12-02 05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/.travis.yml   1970-01-01 01:00:00.000000000 +0100
@@ -1,89 +0,0 @@
-# Travis-CI Build for rabbitmq-c
-# see travis-ci.org for details
-
-language: c
-
-dist: xenial
-# Currently libpopt-dev is not on the list of whitelisted apt-packages.
-sudo: true
-
-addons:
-  apt:
-    packages: &default_packages
-      - rabbitmq-server
-      - clang-3.9
-      - clang-format-3.9
-      - libpopt-dev
-  coverity_scan:
-    project:
-      name: "alanxz/rabbitmq-c"
-      description: "C AMQP client for RabbitMQ"
-    notification_email: alan.anto...@gmail.com
-    build_command_prepend: mkdir build && pushd build && cmake .. && popd
-    build_command: cmake --build ./build
-    branch_pattern: coverity_scan
-
-env:
-  global:
-   # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
-   #   via the "travis encrypt" command using the project repo's public key
-   - secure: 
"gDwqo3jHj+HHGzFKnxL/nwZhbVeh2pItw0TbeaHcLtWubUZaf85ViEQRaXPyfnbG7l0OEQq+PjyhKAfvViVq2NP0lGeeu4VM5uMZJhsCLN594BJr39Y4XzOapg0O8mEMhQ0DU2u1Zo4LMgEcRz67aosVQOj6QV30tOzp9fnxn9U="
-
-matrix:
-  include:
-    # Note that the first compiler in the matrix must be gcc, so that the
-    # coverity_scan branch hack below works correctly.
-    - compiler: gcc
-      os: linux
-      env: CONFIG=cmake
-    - compiler: gcc
-      os: linux
-      env: CONFIG=format
-    - compiler: gcc
-      os: linux
-      env: CONFIG=coverage
-    - compiler: clang
-      os: linux
-      env: CONFIG=cmake
-    - compiler: clang
-      os: linux
-      env: CONFIG=asan
-    - compiler: clang
-      os: linux
-      env: CONFIG=tsan
-    - compiler: clang
-      os: linux
-      env: CONFIG=scan-build
-    - compiler: clang
-      os: osx
-      env: CONFIG=cmake
-    - compiler: gcc
-      os: linux
-      env: NAME="openssl-1.1.0" CONFIG=cmake
-      addons:
-        apt:
-          sources:
-          - sourceline: 'ppa:ondrej/nginx-mainline'
-          packages:
-          - *default_packages
-          - libssl1.1
-          - openssl
-          - libssl-dev
-
-  allow_failures:
-    - compiler: clang
-      os: linux
-      env: CONFIG=tsan
-
-before_install:
-  # ugly hack; if running a coverity scan abort all except the 1st build
-  # see note re gcc compiler above needing to be 1st
-  # also note that branch_pattern & the TRAVIS_BRANCH check must match
-  # unfortunately COVERITY_SCAN_BRANCH isn't defined until later in the
-  # build process
-  - if ([[ "${TRAVIS_JOB_NUMBER##*.}" != "1" ]] && [[ "${TRAVIS_BRANCH}" == 
"coverity_scan" ]]); then false ; fi
-
-
-script:
-  # Don't bother building if this is being done in the coverity_scan branch.
-  - if [ "${COVERITY_SCAN_BRANCH}" != 1 ]; then ./travis.sh $CONFIG ; fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/CMakeLists.txt 
new/rabbitmq-c-0.11.0/CMakeLists.txt
--- old/rabbitmq-c-0.10.0/CMakeLists.txt        2019-12-02 05:37:33.000000000 
+0100
+++ new/rabbitmq-c-0.11.0/CMakeLists.txt        2021-04-01 05:22:03.000000000 
+0200
@@ -16,9 +16,9 @@
 # 3. If any interfaces have been added since the last public release, then 
increment age.
 # 4. If any interfaces have been removed since the last public release, then 
set age to 0.
 
-set(RMQ_SOVERSION_CURRENT   8)
+set(RMQ_SOVERSION_CURRENT   9)
 set(RMQ_SOVERSION_REVISION  0)
-set(RMQ_SOVERSION_AGE       4)
+set(RMQ_SOVERSION_AGE       5)
 
 math(EXPR RMQ_SOVERSION_MAJOR "${RMQ_SOVERSION_CURRENT} - 
${RMQ_SOVERSION_AGE}")
 math(EXPR RMQ_SOVERSION_MINOR "${RMQ_SOVERSION_AGE}")
@@ -266,11 +266,14 @@
 option(BUILD_TOOLS_DOCS "Build man pages for Tools (requires xmlto)" 
${DO_DOCS})
 option(BUILD_TESTS "Build tests (run tests with make test)" ON)
 option(BUILD_API_DOCS "Build Doxygen API docs" ${DOXYGEN_FOUND})
+option(RUN_SYSTEM_TESTS "Run system tests (i.e. tests requiring an accessible 
RabbitMQ server instance on localhost)" OFF)
 
 if (NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS)
     message(FATAL_ERROR "One or both of BUILD_SHARED_LIBS or BUILD_STATIC_LIBS 
must be set to ON to build")
 endif()
 
+set(targets_export_name rabbitmq-targets)
+
 add_subdirectory(librabbitmq)
 
 if (BUILD_EXAMPLES)
@@ -311,10 +314,13 @@
     )
 endif ()
 
-set(libs_private ${SOCKET_LIBRARIES} ${LIBRT})
+foreach (lib ${SOCKET_LIBRARIES})
+    set(libs_private "${libs_private} -l${lib}")
+endforeach(lib)
+set(libs_private "${libs_private} -l${LIBRT}")
 if (ENABLE_SSL_SUPPORT)
   set(requires_private "openssl")
-  set(libs_private ${libs_private} ${CMAKE_THREAD_LIBS_INIT})
+  set(libs_private "${libs_private} ${CMAKE_THREAD_LIBS_INIT}")
 endif()
 
 set(prefix ${CMAKE_INSTALL_PREFIX})
@@ -325,6 +331,43 @@
 configure_file(cmake/config.h.in 
${CMAKE_CURRENT_BINARY_DIR}/librabbitmq/config.h)
 configure_file(librabbitmq.pc.in ${CMAKE_CURRENT_BINARY_DIR}/librabbitmq.pc 
@ONLY)
 
+
+include(CMakePackageConfigHelpers)
+set(RMQ_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/rabbitmq-c)
+set(project_config "${CMAKE_CURRENT_BINARY_DIR}/rabbitmq-c-config.cmake")
+set(version_config 
"${CMAKE_CURRENT_BINARY_DIR}/rabbitmq-c-config-version.cmake")
+
+write_basic_package_version_file(
+    "${version_config}"
+    VERSION ${RMQ_VERSION}
+    COMPATIBILITY AnyNewerVersion)
+
+configure_package_config_file(
+    "${CMAKE_CURRENT_SOURCE_DIR}/cmake/rabbitmq-c-config.cmake.in"
+    "${project_config}"
+    INSTALL_DESTINATION "${RMQ_CMAKE_DIR}")
+
+
+if(BUILD_SHARED_LIBS)
+    list(APPEND INSTALL_TARGETS rabbitmq)
+endif()
+if(BUILD_STATIC_LIBS)
+    list(APPEND INSTALL_TARGETS rabbitmq-static)
+endif()
+
+export(TARGETS ${INSTALL_TARGETS} 
+    NAMESPACE rabbitmq:: 
+    FILE ${PROJECT_BINARY_DIR}/${targets_export_name}.cmake)
+
+install(FILES ${project_config} ${version_config}
+    DESTINATION ${RMQ_CMAKE_DIR}
+    )
+
+install(EXPORT ${targets_export_name} 
+    DESTINATION ${RMQ_CMAKE_DIR}
+    NAMESPACE rabbitmq::
+    )
+
 install(FILES
   ${CMAKE_CURRENT_BINARY_DIR}/librabbitmq.pc
   DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/ChangeLog.md 
new/rabbitmq-c-0.11.0/ChangeLog.md
--- old/rabbitmq-c-0.10.0/ChangeLog.md  2019-12-02 05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/ChangeLog.md  2021-04-01 05:22:03.000000000 +0200
@@ -1,4 +1,25 @@
 # Change Log
+## v0.11.0 - 2021-03-31
+## Added:
+- rabbitmq-c-config.cmake is now generated (#611)
+- rabbitmq-c can be compiled on Win32 using pthreads (#613)
+- Add amqp_set_ssl_engine API to allow setting OpenSSL engine (#618)
+- Add amqp_ssl_socket_set_key_engine API to allow setting OpenSSL engine (#618)
+- Add support use of password-protected SSL keys (#661)
+
+## Changed
+- Update OpenSSL library initialization to current best practices (#603)
+- Updates to OpenSSL to support v3.0.0 (#654, 627)
+
+## Fixed:
+- OpenSSL symbol clash when compiling on Win32 (#583)
+- Restore correct non-blocking behavior using OpenSSL v1.1.1 (#586)
+- Disable harmless secure CRT compile warnings on Win32 (#588)
+- Fix unused parameter warnings on Win32 (#591)
+- Fix invalid format in generated pkg-config file (#599)
+- Fix invalid AMQP_STATUS_HEARTBEAT_TIMEOUT (#557)
+- Fix incorrect port when using --server flag in CLI tools
+
 ## v0.10.0 - 2019-12-01
 ## Added:
 - amqp_ssl_socket_get_context can be used to get the current OpenSSL CTX*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/README.md 
new/rabbitmq-c-0.11.0/README.md
--- old/rabbitmq-c-0.10.0/README.md     2019-12-02 05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/README.md     2021-04-01 05:22:03.000000000 +0200
@@ -84,6 +84,23 @@
    default this is ON if the OpenSSL headers and library can be found.
 * `BUILD_API_DOCS=ON/OFF` - toggles building the Doxygen API documentation, by
    default this is OFF
+* `RUN_SYSTEM_TESTS=ON/OFF` toggles building the system tests (i.e. tests 
requiring 
+   an accessible RabbitMQ server instance on localhost), by default this is OFF
+
+## Building RabbitMQ - Using vcpkg
+
+You can download and install RabbitMQ using the 
[vcpkg](https://github.com/Microsoft/vcpkg) 
+dependency manager:
+
+    git clone https://github.com/Microsoft/vcpkg.git
+    cd vcpkg
+    ./bootstrap-vcpkg.sh
+    ./vcpkg integrate install
+    ./vcpkg install librabbitmq
+
+The RabbitMQ port in vcpkg is kept up to date by Microsoft team members and 
+community contributors. If the version is out of date, 
+please [create an issue or pull request](https://github.com/Microsoft/vcpkg) 
on the vcpkg repository.
 
 ## Running the examples
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/appveyor.yml 
new/rabbitmq-c-0.11.0/appveyor.yml
--- old/rabbitmq-c-0.10.0/appveyor.yml  2019-12-02 05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/appveyor.yml  1970-01-01 01:00:00.000000000 +0100
@@ -1,42 +0,0 @@
-# appveyor configuration
-version: '{build}'
-
-# Limit history cloned. This matches what travis-CI currently does.
-clone_depth: 50
-
-environment:
-  matrix:
-    - GENERATOR: Visual Studio 12 Win64
-      BITS: 64
-    - GENERATOR: Visual Studio 12
-      BITS: 32
-configuration:
-  - Debug
-  - Release
-
-cache:
-  - c:\deps -> appveyor.yml
-  
-# borrowed from https://github.com/FreeTDS/freetds
-install:
-  # xidel (xpath command line tool)
-  - appveyor DownloadFile 
"https://downloads.sourceforge.net/project/videlibri/Xidel/Xidel 
0.9.6/xidel-0.9.6.win32.zip"
-  - 7z x xidel-0.9.6.win32.zip xidel.exe
-  # detect version of Windows OpenSSL binaries published by the Shining Light 
Productions crew
-  - xidel https://slproweb.com/products/Win32OpenSSL.html --extract 
"(//td/a[starts-with(@href, '/download') and starts-with(text(), 'Win32 
OpenSSL') and ends-with(text(), 
'Light')])[1]/translate(substring-before(substring-after(text(), 'Win32 OpenSSL 
v'), ' Light'), '.', '_')" > openssl_ver.txt
-  - set /P OPENSSL_VER=< openssl_ver.txt
-  # OpenSSL
-  - appveyor DownloadFile 
https://slproweb.com/download/Win%BITS%OpenSSL-%OPENSSL_VER%.exe     
-  - "Win%BITS%OpenSSL-%OPENSSL_VER%.exe /SP- /SILENT /SUPPRESSMSGBOXES 
/NORESTART"
-
-before_build:
-  - cmake -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DBUILD_TESTS=ON 
-DENABLE_SSL_SUPPORT=True -G"%GENERATOR%" .
-
-build:
-  project: ALL_BUILD.vcxproj
-  verbosity: normal
-
-artifacts:
-  - path: librabbitmq\%CONFIGURATION%
-    name: LibRabbit-%BITS%-%OPENSSL_VER%-%CONFIGURATION%.zip
-    type: zip
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/cmake/rabbitmq-c-config.cmake.in 
new/rabbitmq-c-0.11.0/cmake/rabbitmq-c-config.cmake.in
--- old/rabbitmq-c-0.10.0/cmake/rabbitmq-c-config.cmake.in      1970-01-01 
01:00:00.000000000 +0100
+++ new/rabbitmq-c-0.11.0/cmake/rabbitmq-c-config.cmake.in      2021-04-01 
05:22:03.000000000 +0200
@@ -0,0 +1,4 @@
+@PACKAGE_INIT@
+
+include(${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake)
+check_required_components(rabbitmq-c)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/examples/amqp_consumer.c 
new/rabbitmq-c-0.11.0/examples/amqp_consumer.c
--- old/rabbitmq-c-0.10.0/examples/amqp_consumer.c      2019-12-02 
05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/examples/amqp_consumer.c      2021-04-01 
05:22:03.000000000 +0200
@@ -205,6 +205,8 @@
 
   run(conn);
 
+  amqp_bytes_free(queuename);
+
   die_on_amqp_error(amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS),
                     "Closing channel");
   die_on_amqp_error(amqp_connection_close(conn, AMQP_REPLY_SUCCESS),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/examples/amqp_listen.c 
new/rabbitmq-c-0.11.0/examples/amqp_listen.c
--- old/rabbitmq-c-0.10.0/examples/amqp_listen.c        2019-12-02 
05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/examples/amqp_listen.c        2021-04-01 
05:22:03.000000000 +0200
@@ -133,6 +133,8 @@
     }
   }
 
+  amqp_bytes_free(queuename);
+
   die_on_amqp_error(amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS),
                     "Closing channel");
   die_on_amqp_error(amqp_connection_close(conn, AMQP_REPLY_SUCCESS),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/examples/amqp_ssl_connect.c 
new/rabbitmq-c-0.11.0/examples/amqp_ssl_connect.c
--- old/rabbitmq-c-0.10.0/examples/amqp_ssl_connect.c   2019-12-02 
05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/examples/amqp_ssl_connect.c   2021-04-01 
05:22:03.000000000 +0200
@@ -71,8 +71,9 @@
 
   if (argc < 3) {
     fprintf(stderr,
-            "Usage: amqps_connect_timeout host port timeout_sec "
-            "[cacert.pem [verifypeer] [verifyhostname] [key.pem cert.pem]]\n");
+            "Usage: amqp_ssl_connect host port timeout_sec "
+            "[cacert.pem [engine engine_ID] [verifypeer] [verifyhostname] "
+            "[key.pem cert.pem]]\n");
     return 1;
   }
 
@@ -103,6 +104,10 @@
     int nextarg = 5;
     die_on_error(amqp_ssl_socket_set_cacert(socket, argv[4]),
                  "setting CA certificate");
+    if (argc > nextarg && !strcmp("engine", argv[nextarg])) {
+      amqp_set_ssl_engine(argv[++nextarg]);
+      nextarg++;
+    }
     if (argc > nextarg && !strcmp("verifypeer", argv[nextarg])) {
       amqp_ssl_socket_set_verify_peer(socket, 1);
       nextarg++;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/librabbitmq/CMakeLists.txt 
new/rabbitmq-c-0.11.0/librabbitmq/CMakeLists.txt
--- old/rabbitmq-c-0.10.0/librabbitmq/CMakeLists.txt    2019-12-02 
05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/librabbitmq/CMakeLists.txt    2021-04-01 
05:22:03.000000000 +0200
@@ -45,12 +45,6 @@
   set(AMQP_FRAMING_C_PATH ${CMAKE_CURRENT_SOURCE_DIR}/amqp_framing.c)
 endif (REGENERATE_AMQP_FRAMING)
 
-if(WIN32)
-  set(SOCKET_IMPL "win32")
-else(WIN32)
-  set(SOCKET_IMPL "unix")
-endif(WIN32)
-
 if(MSVC)
   if(MSVC_VERSION LESS 1600)
     set(MSINTTYPES_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/win32/msinttypes")
@@ -63,7 +57,6 @@
 set(LIBRABBITMQ_INCLUDE_DIRS
   ${CMAKE_CURRENT_BINARY_DIR}
        ${CMAKE_CURRENT_SOURCE_DIR}
-       ${SOCKET_IMPL}
        ${MSINTTYPES_INCLUDE}
        )
 
@@ -96,10 +89,12 @@
       PROPERTIES COMPILE_FLAGS -Wno-deprecated-declarations)
   endif()
 
-  if (WIN32)
+  if (WIN32 AND NOT CMAKE_USE_PTHREADS_INIT)
     set(AMQP_SSL_SRCS ${AMQP_SSL_SRCS} win32/threads.h win32/threads.c)
+    include_directories(win32)
   else()
     set(AMQP_SSL_SRCS ${AMQP_SSL_SRCS} unix/threads.h)
+    include_directories(unix)
   endif()
 endif()
 
@@ -119,9 +114,6 @@
 
 if (BUILD_SHARED_LIBS)
     add_library(rabbitmq SHARED ${RABBITMQ_SOURCES})
-    if (THREADS_HAVE_PTHREAD_ARG)
-      target_compile_options(rabbitmq PUBLIC "-pthread")
-    endif()
 
     target_link_libraries(rabbitmq ${RMQ_LIBRARIES})
 
@@ -131,7 +123,7 @@
         set_target_properties(rabbitmq PROPERTIES VERSION ${RMQ_VERSION} 
SOVERSION ${RMQ_SOVERSION})
     endif (WIN32)
 
-    install(TARGETS rabbitmq
+    install(TARGETS rabbitmq EXPORT "${targets_export_name}"
         RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
         LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
         ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
@@ -142,9 +134,6 @@
 
 if (BUILD_STATIC_LIBS)
     add_library(rabbitmq-static STATIC ${RABBITMQ_SOURCES})
-    if (THREADS_HAVE_PTHREAD_ARG)
-      target_compile_options(rabbitmq-static PUBLIC "-pthread")
-    endif()
 
     target_link_libraries(rabbitmq-static ${RMQ_LIBRARIES})
 
@@ -165,7 +154,7 @@
         set_target_properties(rabbitmq-static PROPERTIES VERSION 
${RMQ_VERSION} SOVERSION ${RMQ_SOVERSION} OUTPUT_NAME rabbitmq)
     endif (WIN32)
 
-    install(TARGETS rabbitmq-static
+    install(TARGETS rabbitmq-static EXPORT "${targets_export_name}"
         ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
         )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/librabbitmq/amqp.h 
new/rabbitmq-c-0.11.0/librabbitmq/amqp.h
--- old/rabbitmq-c-0.10.0/librabbitmq/amqp.h    2019-12-02 05:37:33.000000000 
+0100
+++ new/rabbitmq-c-0.11.0/librabbitmq/amqp.h    2021-04-01 05:22:03.000000000 
+0200
@@ -219,7 +219,7 @@
  */
 
 #define AMQP_VERSION_MAJOR 0
-#define AMQP_VERSION_MINOR 10
+#define AMQP_VERSION_MINOR 11
 #define AMQP_VERSION_PATCH 0
 #define AMQP_VERSION_IS_RELEASE 1
 
@@ -575,8 +575,8 @@
                     * own block in the large_blocks block list */
 
   amqp_pool_blocklist_t pages; /**< blocks that are the size of pagesize */
-  amqp_pool_blocklist_t
-      large_blocks; /**< allocations larger than the pagesize */
+  amqp_pool_blocklist_t large_blocks; /**< allocations larger than the pagesize
+                                       */
 
   int next_page;     /**< an index to the next unused page block */
   char *alloc_block; /**< pointer to the current allocation block */
@@ -608,8 +608,8 @@
                            */
   amqp_channel_t channel; /**< the channel the frame was received on */
   union {
-    amqp_method_t
-        method; /**< a method, use if frame_type == AMQP_FRAME_METHOD */
+    amqp_method_t method; /**< a method, use if frame_type == AMQP_FRAME_METHOD
+                           */
     struct {
       uint16_t class_id;        /**< the class for the properties */
       uint64_t body_size;       /**< size of the body in bytes */
@@ -770,7 +770,8 @@
   AMQP_STATUS_SSL_PEER_VERIFY_FAILED = -0x0202,     /**< SSL validation of peer
                                                          certificate failed. */
   AMQP_STATUS_SSL_CONNECTION_FAILED = -0x0203, /**< SSL handshake failed. */
-  _AMQP_STATUS_SSL_NEXT_VALUE = -0x0204        /**< Internal value */
+  AMQP_STATUS_SSL_SET_ENGINE_FAILED = -0x0204, /**< SSL setting engine failed 
*/
+  _AMQP_STATUS_SSL_NEXT_VALUE = -0x0205        /**< Internal value */
 } amqp_status_enum;
 
 /**
@@ -1044,7 +1045,7 @@
  * of the socket outside of the library will lead to undefined behavior.
  * Additionally rabbitmq-c may use the socket differently version-to-version,
  * what may work in one version, may break in the next version. Be sure to
- * throughly test any applications that use the socket returned by this
+ * thoroughly test any applications that use the socket returned by this
  * function especially when using a newer version of rabbitmq-c
  *
  * \param [in] state the connection object
@@ -1510,7 +1511,7 @@
  * amqp_data_in_buffer() function.
  *
  * \note This function does not return heartbeat frames. When enabled,
- *  heartbeating is handed internally internally by the library.
+ *  heartbeating is handled internally by the library.
  *
  * \param [in,out] state the connection object
  * \param [out] decoded_frame the frame
@@ -1548,7 +1549,7 @@
 AMQP_PUBLIC_FUNCTION
 int AMQP_CALL amqp_simple_wait_frame_noblock(amqp_connection_state_t state,
                                              amqp_frame_t *decoded_frame,
-                                             struct timeval *tv);
+                                             const struct timeval *tv);
 
 /**
  * Waits for a specific method from the broker
@@ -2200,16 +2201,16 @@
  * \since v0.4.0
  */
 typedef struct amqp_envelope_t_ {
-  amqp_channel_t channel; /**< channel message was delivered on */
-  amqp_bytes_t
-      consumer_tag;      /**< the consumer tag the message was delivered to */
-  uint64_t delivery_tag; /**< the messages delivery tag */
+  amqp_channel_t channel;     /**< channel message was delivered on */
+  amqp_bytes_t consumer_tag;  /**< the consumer tag the message was delivered 
to
+                               */
+  uint64_t delivery_tag;      /**< the messages delivery tag */
   amqp_boolean_t redelivered; /**< flag indicating whether this message is 
being
                                  redelivered */
   amqp_bytes_t exchange;      /**< exchange this message was published to */
-  amqp_bytes_t
-      routing_key; /**< the routing key this message was published with */
-  amqp_message_t message; /**< the message */
+  amqp_bytes_t routing_key; /**< the routing key this message was published 
with
+                             */
+  amqp_message_t message;   /**< the message */
 } amqp_envelope_t;
 
 /**
@@ -2245,7 +2246,7 @@
 AMQP_PUBLIC_FUNCTION
 amqp_rpc_reply_t AMQP_CALL amqp_consume_message(amqp_connection_state_t state,
                                                 amqp_envelope_t *envelope,
-                                                struct timeval *timeout,
+                                                const struct timeval *timeout,
                                                 int flags);
 
 /**
@@ -2365,7 +2366,7 @@
  */
 AMQP_PUBLIC_FUNCTION
 int AMQP_CALL amqp_socket_open_noblock(amqp_socket_t *self, const char *host,
-                                       int port, struct timeval *timeout);
+                                       int port, const struct timeval 
*timeout);
 
 /**
  * Get the socket descriptor in use by a socket object.
@@ -2473,7 +2474,7 @@
  */
 AMQP_PUBLIC_FUNCTION
 int AMQP_CALL amqp_set_handshake_timeout(amqp_connection_state_t state,
-                                         struct timeval *timeout);
+                                         const struct timeval *timeout);
 
 /**
  * Get the RPC timeout
@@ -2531,7 +2532,7 @@
  */
 AMQP_PUBLIC_FUNCTION
 int AMQP_CALL amqp_set_rpc_timeout(amqp_connection_state_t state,
-                                   struct timeval *timeout);
+                                   const struct timeval *timeout);
 
 AMQP_END_DECLS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/librabbitmq/amqp_api.c 
new/rabbitmq-c-0.11.0/librabbitmq/amqp_api.c
--- old/rabbitmq-c-0.10.0/librabbitmq/amqp_api.c        2019-12-02 
05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/librabbitmq/amqp_api.c        2021-04-01 
05:22:03.000000000 +0200
@@ -108,14 +108,16 @@
     "socket library initialization failed"};
 
 static const char *ssl_error_strings[] = {
-    /* AMQP_STATUS_SSL_ERRO  R                -0x0200 */
+    /* AMQP_STATUS_SSL_ERROR                  -0x0200 */
     "a SSL error occurred",
     /* AMQP_STATUS_SSL_HOSTNAME_VERIFY_FAILED -0x0201 */
     "SSL hostname verification failed",
     /* AMQP_STATUS_SSL_PEER_VERIFY_FAILED     -0x0202 */
     "SSL peer cert verification failed",
     /* AMQP_STATUS_SSL_CONNECTION_FAILED      -0x0203 */
-    "SSL handshake failed"};
+    "SSL handshake failed",
+    /* AMQP_STATUS_SSL_SET_ENGINE_FAILED      -0x0204 */
+    "SSL setting engine failed"};
 
 static const char *unknown_error_string = "(unknown error)";
 
@@ -361,7 +363,7 @@
 }
 
 int amqp_set_handshake_timeout(amqp_connection_state_t state,
-                               struct timeval *timeout) {
+                               const struct timeval *timeout) {
   if (timeout) {
     if (timeout->tv_sec < 0 || timeout->tv_usec < 0) {
       return AMQP_STATUS_INVALID_PARAMETER;
@@ -380,7 +382,7 @@
 }
 
 int amqp_set_rpc_timeout(amqp_connection_state_t state,
-                         struct timeval *timeout) {
+                         const struct timeval *timeout) {
   if (timeout) {
     if (timeout->tv_sec < 0 || timeout->tv_usec < 0) {
       return AMQP_STATUS_INVALID_PARAMETER;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/librabbitmq/amqp_connection.c 
new/rabbitmq-c-0.11.0/librabbitmq/amqp_connection.c
--- old/rabbitmq-c-0.10.0/librabbitmq/amqp_connection.c 2019-12-02 
05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/librabbitmq/amqp_connection.c 2021-04-01 
05:22:03.000000000 +0200
@@ -281,8 +281,8 @@
         return (int)bytes_consumed;
       }
 
-    /* it's not a protocol header; fall through to process it as a
-       regular frame header */
+      /* it's not a protocol header; fall through to process it as a
+         regular frame header */
 
     case CONNECTION_STATE_HEADER: {
       amqp_channel_t channel;
@@ -329,7 +329,7 @@
         return (int)bytes_consumed;
       }
     }
-    /* fall through to process body */
+      /* fall through to process body */
 
     case CONNECTION_STATE_BODY: {
       amqp_bytes_t encoded;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/librabbitmq/amqp_consumer.c 
new/rabbitmq-c-0.11.0/librabbitmq/amqp_consumer.c
--- old/rabbitmq-c-0.10.0/librabbitmq/amqp_consumer.c   2019-12-02 
05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/librabbitmq/amqp_consumer.c   2021-04-01 
05:22:03.000000000 +0200
@@ -134,7 +134,7 @@
 
 amqp_rpc_reply_t amqp_consume_message(amqp_connection_state_t state,
                                       amqp_envelope_t *envelope,
-                                      struct timeval *timeout,
+                                      const struct timeval *timeout,
                                       AMQP_UNUSED int flags) {
   int res;
   amqp_frame_t frame;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/librabbitmq/amqp_framing.h 
new/rabbitmq-c-0.11.0/librabbitmq/amqp_framing.h
--- old/rabbitmq-c-0.10.0/librabbitmq/amqp_framing.h    2019-12-02 
05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/librabbitmq/amqp_framing.h    2021-04-01 
05:22:03.000000000 +0200
@@ -46,7 +46,7 @@
 #define AMQP_PROTOCOL_VERSION_MINOR 9 /**< AMQP protocol version minor */
 #define AMQP_PROTOCOL_VERSION_REVISION                                   \
   1                                  /**< AMQP protocol version revision \
-                                        */
+                                      */
 #define AMQP_PROTOCOL_PORT 5672      /**< Default AMQP Port */
 #define AMQP_FRAME_METHOD 1          /**< Constant: FRAME-METHOD */
 #define AMQP_FRAME_HEADER 2          /**< Constant: FRAME-HEADER */
@@ -794,7 +794,7 @@
 /* Class property records. */
 #define AMQP_CONNECTION_CLASS                    \
   (0x000A) /**< connection class id @internal 10 \
-              */
+            */
 /** connection class properties */
 typedef struct amqp_connection_properties_t_ {
   amqp_flags_t _flags; /**< bit-mask of set fields */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/librabbitmq/amqp_openssl.c 
new/rabbitmq-c-0.11.0/librabbitmq/amqp_openssl.c
--- old/rabbitmq-c-0.10.0/librabbitmq/amqp_openssl.c    2019-12-02 
05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/librabbitmq/amqp_openssl.c    2021-04-01 
05:22:03.000000000 +0200
@@ -28,6 +28,10 @@
 #include "config.h"
 #endif
 
+#ifdef _MSC_VER
+#define _CRT_SECURE_NO_WARNINGS
+#endif
+
 #include "amqp_openssl_bio.h"
 #include "amqp_openssl_hostname_validation.h"
 #include "amqp_private.h"
@@ -59,6 +63,7 @@
 static amqp_boolean_t openssl_initialized = 0;
 static amqp_boolean_t openssl_bio_initialized = 0;
 static int openssl_connections = 0;
+static ENGINE *openssl_engine = NULL;
 
 #define CHECK_SUCCESS(condition)                                            \
   do {                                                                      \
@@ -164,7 +169,7 @@
 }
 
 static int amqp_ssl_socket_open(void *base, const char *host, int port,
-                                struct timeval *timeout) {
+                                const struct timeval *timeout) {
   struct amqp_ssl_socket_t *self = (struct amqp_ssl_socket_t *)base;
   long result;
   int status;
@@ -355,6 +360,11 @@
   /* Disable SSLv2 and SSLv3 */
   SSL_CTX_set_options(self->ctx, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3);
 
+  SSL_CTX_set_mode(self->ctx, SSL_MODE_ENABLE_PARTIAL_WRITE);
+  /* OpenSSL v1.1.1 turns this on by default, which makes the non-blocking
+   * logic not behave as expected, so turn this back off */
+  SSL_CTX_clear_mode(self->ctx, SSL_MODE_AUTO_RETRY);
+
   amqp_set_socket(state, (amqp_socket_t *)self);
 
   return (amqp_socket_t *)self;
@@ -403,6 +413,34 @@
   return AMQP_STATUS_OK;
 }
 
+int amqp_ssl_socket_set_key_engine(amqp_socket_t *base, const char *cert,
+                                   const char *key) {
+  int status;
+  struct amqp_ssl_socket_t *self;
+  EVP_PKEY *pkey = NULL;
+  if (base->klass != &amqp_ssl_socket_class) {
+    amqp_abort("<%p> is not of type amqp_ssl_socket_t", base);
+  }
+  self = (struct amqp_ssl_socket_t *)base;
+  status = SSL_CTX_use_certificate_chain_file(self->ctx, cert);
+  if (1 != status) {
+    return AMQP_STATUS_SSL_ERROR;
+  }
+
+  pkey = ENGINE_load_private_key(openssl_engine, key, NULL, NULL);
+  if (pkey == NULL) {
+    return AMQP_STATUS_SSL_ERROR;
+  }
+
+  status = SSL_CTX_use_PrivateKey(self->ctx, pkey);
+  EVP_PKEY_free(pkey);
+
+  if (1 != status) {
+    return AMQP_STATUS_SSL_ERROR;
+  }
+  return AMQP_STATUS_OK;
+}
+
 static int password_cb(AMQP_UNUSED char *buffer, AMQP_UNUSED int length,
                        AMQP_UNUSED int rwflag, AMQP_UNUSED void *user_data) {
   amqp_abort("rabbitmq-c does not support password protected keys");
@@ -460,6 +498,15 @@
   return AMQP_STATUS_OK;
 }
 
+void amqp_ssl_socket_set_key_passwd(amqp_socket_t *base, const char *passwd) {
+  struct amqp_ssl_socket_t *self;
+  if (base->klass != &amqp_ssl_socket_class) {
+    amqp_abort("<%p> is not of type amqp_ssl_socket_t", base);
+  }
+  self = (struct amqp_ssl_socket_t *)base;
+  SSL_CTX_set_default_passwd_cb_userdata(self->ctx, (void *)passwd);
+}
+
 void amqp_ssl_socket_set_verify(amqp_socket_t *base, amqp_boolean_t verify) {
   amqp_ssl_socket_set_verify_peer(base, verify);
   amqp_ssl_socket_set_verify_hostname(base, verify);
@@ -591,9 +638,7 @@
   CRYPTO_set_locking_callback(ssl_locking_callback);
 
 #ifdef AMQP_OPENSSL_V110
-  if (CONF_modules_load_file(
-          NULL, "rabbitmq-c",
-          CONF_MFLAGS_DEFAULT_SECTION | CONF_MFLAGS_IGNORE_MISSING_FILE) <= 0) 
{
+  if (OPENSSL_init_ssl(0, NULL) <= 0) {
     status = AMQP_STATUS_SSL_ERROR;
     goto out;
   }
@@ -626,6 +671,43 @@
   return status;
 }
 
+int amqp_set_ssl_engine(const char *engine) {
+  int status = AMQP_STATUS_OK;
+  CHECK_SUCCESS(pthread_mutex_lock(&openssl_init_mutex));
+
+  if (!openssl_initialized) {
+    status = AMQP_STATUS_SSL_ERROR;
+    goto out;
+  }
+
+  if (openssl_engine != NULL) {
+    ENGINE_free(openssl_engine);
+    openssl_engine = NULL;
+  }
+
+  if (engine == NULL) {
+    goto out;
+  }
+
+  ENGINE_load_builtin_engines();
+  openssl_engine = ENGINE_by_id(engine);
+  if (openssl_engine == NULL) {
+    status = AMQP_STATUS_SSL_SET_ENGINE_FAILED;
+    goto out;
+  }
+
+  if (ENGINE_set_default(openssl_engine, ENGINE_METHOD_ALL) == 0) {
+    ENGINE_free(openssl_engine);
+    openssl_engine = NULL;
+    status = AMQP_STATUS_SSL_SET_ENGINE_FAILED;
+    goto out;
+  }
+
+out:
+  CHECK_SUCCESS(pthread_mutex_unlock(&openssl_init_mutex));
+  return status;
+}
+
 static int initialize_ssl_and_increment_connections() {
   int status;
   CHECK_SUCCESS(pthread_mutex_lock(&openssl_init_mutex));
@@ -680,10 +762,6 @@
   ERR_remove_state(0);
 #endif
 
-#ifndef LIBRESSL_VERSION_NUMBER
-  FIPS_mode_set(0);
-#endif
-
   CRYPTO_set_locking_callback(NULL);
   CRYPTO_set_id_callback(NULL);
   {
@@ -694,6 +772,11 @@
     free(amqp_openssl_lockarray);
   }
 
+  if (openssl_engine != NULL) {
+    ENGINE_free(openssl_engine);
+    openssl_engine = NULL;
+  }
+
   ENGINE_cleanup();
   CONF_modules_free();
   EVP_cleanup();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/rabbitmq-c-0.10.0/librabbitmq/amqp_openssl_hostname_validation.c 
new/rabbitmq-c-0.11.0/librabbitmq/amqp_openssl_hostname_validation.c
--- old/rabbitmq-c-0.10.0/librabbitmq/amqp_openssl_hostname_validation.c        
2019-12-02 05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/librabbitmq/amqp_openssl_hostname_validation.c        
2021-04-01 05:22:03.000000000 +0200
@@ -27,6 +27,10 @@
  * https://wiki.openssl.org/index.php/Hostname_validation
  */
 
+#if defined(_WIN32)
+#define WIN32_LEAN_AND_MEAN
+#endif
+
 #include <openssl/ssl.h>
 #include <openssl/x509v3.h>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/rabbitmq-c-0.10.0/librabbitmq/amqp_openssl_hostname_validation.h 
new/rabbitmq-c-0.11.0/librabbitmq/amqp_openssl_hostname_validation.h
--- old/rabbitmq-c-0.10.0/librabbitmq/amqp_openssl_hostname_validation.h        
2019-12-02 05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/librabbitmq/amqp_openssl_hostname_validation.h        
2021-04-01 05:22:03.000000000 +0200
@@ -30,7 +30,7 @@
  * https://wiki.openssl.org/index.php/Hostname_validation
  */
 
-#include <openssl/x509v3.h>
+#include <openssl/ossl_typ.h>
 
 typedef enum {
   AMQP_HVR_MATCH_FOUND,
@@ -41,17 +41,17 @@
 } amqp_hostname_validation_result;
 
 /**
-* Validates the server's identity by looking for the expected hostname in the
-* server's certificate. As described in RFC 6125, it first tries to find a 
match
-* in the Subject Alternative Name extension. If the extension is not present in
-* the certificate, it checks the Common Name instead.
-*
-* Returns AMQP_HVR_MATCH_FOUND if a match was found.
-* Returns AMQP_HVR_MATCH_NOT_FOUND if no matches were found.
-* Returns AMQP_HVR_MALFORMED_CERTIFICATE if any of the hostnames had a NUL
-* character embedded in it.
-* Returns AMQP_HVR_ERROR if there was an error.
-*/
+ * Validates the server's identity by looking for the expected hostname in the
+ * server's certificate. As described in RFC 6125, it first tries to find a
+ * match in the Subject Alternative Name extension. If the extension is not
+ * present in the certificate, it checks the Common Name instead.
+ *
+ * Returns AMQP_HVR_MATCH_FOUND if a match was found.
+ * Returns AMQP_HVR_MATCH_NOT_FOUND if no matches were found.
+ * Returns AMQP_HVR_MALFORMED_CERTIFICATE if any of the hostnames had a NUL
+ * character embedded in it.
+ * Returns AMQP_HVR_ERROR if there was an error.
+ */
 amqp_hostname_validation_result amqp_ssl_validate_hostname(
     const char *hostname, const X509 *server_cert);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/librabbitmq/amqp_private.h 
new/rabbitmq-c-0.11.0/librabbitmq/amqp_private.h
--- old/rabbitmq-c-0.10.0/librabbitmq/amqp_private.h    2019-12-02 
05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/librabbitmq/amqp_private.h    2021-04-01 
05:22:03.000000000 +0200
@@ -71,7 +71,7 @@
 #define AMQP_UNUSED __attribute__((__unused__))
 #elif defined(_MSC_VER)
 #define AMQP_NORETURN __declspec(noreturn)
-#define AMQP_UNUSED
+#define AMQP_UNUSED __pragma(warning(suppress : 4100))
 #else
 #define AMQP_NORETURN
 #define AMQP_UNUSED
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/librabbitmq/amqp_socket.c 
new/rabbitmq-c-0.11.0/librabbitmq/amqp_socket.c
--- old/rabbitmq-c-0.10.0/librabbitmq/amqp_socket.c     2019-12-02 
05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/librabbitmq/amqp_socket.c     2021-04-01 
05:22:03.000000000 +0200
@@ -139,7 +139,7 @@
 }
 
 int amqp_socket_open_noblock(amqp_socket_t *self, const char *host, int port,
-                             struct timeval *timeout) {
+                             const struct timeval *timeout) {
   assert(self);
   assert(self->klass->open);
   return self->klass->open(self, host, port, timeout);
@@ -312,7 +312,7 @@
 }
 
 int amqp_open_socket_noblock(char const *hostname, int portnumber,
-                             struct timeval *timeout) {
+                             const struct timeval *timeout) {
   amqp_time_t deadline;
   int res = amqp_time_from_now(&deadline, timeout);
   if (AMQP_STATUS_OK != res) {
@@ -760,7 +760,10 @@
       state->last_queued_frame = link;
     }
   }
-  timeout = amqp_time_immediate();
+  int res = amqp_time_s_from_now(&timeout, 0);
+  if (AMQP_STATUS_OK != res) {
+    return res;
+  }
 
   return recv_with_timeout(state, timeout);
 }
@@ -938,7 +941,7 @@
 
 int amqp_simple_wait_frame_noblock(amqp_connection_state_t state,
                                    amqp_frame_t *decoded_frame,
-                                   struct timeval *timeout) {
+                                   const struct timeval *timeout) {
   amqp_time_t deadline;
 
   int res = amqp_time_from_now(&deadline, timeout);
@@ -1226,10 +1229,13 @@
   return res;
 }
 
-static amqp_rpc_reply_t amqp_login_inner(
-    amqp_connection_state_t state, char const *vhost, int channel_max,
-    int frame_max, int heartbeat, const amqp_table_t *client_properties,
-    struct timeval *timeout, amqp_sasl_method_enum sasl_method, va_list vl) {
+static amqp_rpc_reply_t amqp_login_inner(amqp_connection_state_t state,
+                                         char const *vhost, int channel_max,
+                                         int frame_max, int heartbeat,
+                                         const amqp_table_t *client_properties,
+                                         const struct timeval *timeout,
+                                         amqp_sasl_method_enum sasl_method,
+                                         va_list vl) {
   int res;
   amqp_method_t method;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/librabbitmq/amqp_socket.h 
new/rabbitmq-c-0.11.0/librabbitmq/amqp_socket.h
--- old/rabbitmq-c-0.10.0/librabbitmq/amqp_socket.h     2019-12-02 
05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/librabbitmq/amqp_socket.h     2021-04-01 
05:22:03.000000000 +0200
@@ -53,7 +53,8 @@
 /* Socket callbacks. */
 typedef ssize_t (*amqp_socket_send_fn)(void *, const void *, size_t, int);
 typedef ssize_t (*amqp_socket_recv_fn)(void *, void *, size_t, int);
-typedef int (*amqp_socket_open_fn)(void *, const char *, int, struct timeval 
*);
+typedef int (*amqp_socket_open_fn)(void *, const char *, int,
+                                   const struct timeval *);
 typedef int (*amqp_socket_close_fn)(void *, amqp_socket_close_enum);
 typedef int (*amqp_socket_get_sockfd_fn)(void *);
 typedef void (*amqp_socket_delete_fn)(void *);
@@ -157,7 +158,7 @@
  * \return File descriptor upon success, non-zero negative error code 
otherwise.
  */
 int amqp_open_socket_noblock(char const *hostname, int portnumber,
-                             struct timeval *timeout);
+                             const struct timeval *timeout);
 
 int amqp_open_socket_inner(char const *hostname, int portnumber,
                            amqp_time_t deadline);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/librabbitmq/amqp_ssl_socket.h 
new/rabbitmq-c-0.11.0/librabbitmq/amqp_ssl_socket.h
--- old/rabbitmq-c-0.10.0/librabbitmq/amqp_ssl_socket.h 2019-12-02 
05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/librabbitmq/amqp_ssl_socket.h 2021-04-01 
05:22:03.000000000 +0200
@@ -86,6 +86,18 @@
                                          const char *cacert);
 
 /**
+ * Set the password of key in PEM format.
+ *
+ * \param [in,out] self An SSL/TLS socket object.
+ * \param [in] passwd The password of key in PEM format.
+ *
+ * \since v0.11.0
+ */
+AMQP_PUBLIC_FUNCTION
+void AMQP_CALL amqp_ssl_socket_set_key_passwd(amqp_socket_t *self,
+                                              const char *passwd);
+
+/**
  * Set the client key.
  *
  * \param [in,out] self An SSL/TLS socket object.
@@ -102,6 +114,24 @@
                                       const char *key);
 
 /**
+ * Set the client key use the engine.
+ *
+ * This function requires amqp_set_ssl_engine() has been called.
+ *
+ * \param [in,out] self An SSL/TLS socket object.
+ * \param [in] cert Path to the client certificate in PEM foramt.
+ * \param [in] the key ID.
+ *
+ * \return \ref AMQP_STATUS_OK on success an \ref amqp_status_enum value on
+ *  failure.
+ *
+ * \since v0.11.0
+ */
+AMQP_PUBLIC_FUNCTION
+int AMQP_CALL amqp_ssl_socket_set_key_engine(amqp_socket_t *self,
+                                             const char *cert, const char 
*key);
+
+/**
  * Set the client key from a buffer.
  *
  * \param [in,out] self An SSL/TLS socket object.
@@ -238,6 +268,22 @@
 int AMQP_CALL amqp_initialize_ssl_library(void);
 
 /**
+ * Set the engine for underlying SSL/TLS library.
+ *
+ * This function is thread-safe, and may be called more than once.
+ *
+ * This function requires amqp_initialize_ssl_library() or 
amqp_ssl_socket_new()
+ * has been called.
+ *
+ * \param [in] engine the engine ID
+ * \return AMQP_STATUS_OK on success.
+ *
+ * \since v0.11.0
+ */
+AMQP_PUBLIC_FUNCTION
+int amqp_set_ssl_engine(const char *engine);
+
+/**
  * Uninitialize the underlying SSL/TLS library.
  *
  * \return AMQP_STATUS_OK on success.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/librabbitmq/amqp_table.c 
new/rabbitmq-c-0.11.0/librabbitmq/amqp_table.c
--- old/rabbitmq-c-0.10.0/librabbitmq/amqp_table.c      2019-12-02 
05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/librabbitmq/amqp_table.c      2021-04-01 
05:22:03.000000000 +0200
@@ -247,11 +247,11 @@
 
     case AMQP_FIELD_KIND_F32:
       TRIVIAL_FIELD_DECODER(32);
-    /* and by punning, f32 magically gets the right value...! */
+      /* and by punning, f32 magically gets the right value...! */
 
     case AMQP_FIELD_KIND_F64:
       TRIVIAL_FIELD_DECODER(64);
-    /* and by punning, f64 magically gets the right value...! */
+      /* and by punning, f64 magically gets the right value...! */
 
     case AMQP_FIELD_KIND_DECIMAL:
       if (!amqp_decode_8(encoded, offset, &entry->value.decimal.decimals) ||
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/librabbitmq/amqp_tcp_socket.c 
new/rabbitmq-c-0.11.0/librabbitmq/amqp_tcp_socket.c
--- old/rabbitmq-c-0.10.0/librabbitmq/amqp_tcp_socket.c 2019-12-02 
05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/librabbitmq/amqp_tcp_socket.c 2021-04-01 
05:22:03.000000000 +0200
@@ -163,7 +163,7 @@
 }
 
 static int amqp_tcp_socket_open(void *base, const char *host, int port,
-                                struct timeval *timeout) {
+                                const struct timeval *timeout) {
   struct amqp_tcp_socket_t *self = (struct amqp_tcp_socket_t *)base;
   if (-1 != self->sockfd) {
     return AMQP_STATUS_SOCKET_INUSE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/librabbitmq/amqp_time.c 
new/rabbitmq-c-0.11.0/librabbitmq/amqp_time.c
--- old/rabbitmq-c-0.10.0/librabbitmq/amqp_time.c       2019-12-02 
05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/librabbitmq/amqp_time.c       2021-04-01 
05:22:03.000000000 +0200
@@ -101,7 +101,7 @@
 }
 #endif /* AMQP_POSIX_TIMER_API */
 
-int amqp_time_from_now(amqp_time_t *time, struct timeval *timeout) {
+int amqp_time_from_now(amqp_time_t *time, const struct timeval *timeout) {
   uint64_t now_ns;
   uint64_t delta_ns;
 
@@ -111,10 +111,6 @@
     *time = amqp_time_infinite();
     return AMQP_STATUS_OK;
   }
-  if (0 == timeout->tv_sec && 0 == timeout->tv_usec) {
-    *time = amqp_time_immediate();
-    return AMQP_STATUS_OK;
-  }
 
   if (timeout->tv_sec < 0 || timeout->tv_usec < 0) {
     return AMQP_STATUS_INVALID_PARAMETER;
@@ -160,12 +156,6 @@
   return AMQP_STATUS_OK;
 }
 
-amqp_time_t amqp_time_immediate(void) {
-  amqp_time_t time;
-  time.time_point_ns = 0;
-  return time;
-}
-
 amqp_time_t amqp_time_infinite(void) {
   amqp_time_t time;
   time.time_point_ns = UINT64_MAX;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/librabbitmq/amqp_time.h 
new/rabbitmq-c-0.11.0/librabbitmq/amqp_time.h
--- old/rabbitmq-c-0.10.0/librabbitmq/amqp_time.h       2019-12-02 
05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/librabbitmq/amqp_time.h       2021-04-01 
05:22:03.000000000 +0200
@@ -53,7 +53,9 @@
  * - UINT64_MAX: means 'at infinity', its mean for polls with an infinite
  *   timeout
  */
-typedef struct amqp_time_t_ { uint64_t time_point_ns; } amqp_time_t;
+typedef struct amqp_time_t_ {
+  uint64_t time_point_ns;
+} amqp_time_t;
 
 /* Gets a monotonic timestamp. This will return 0 if the underlying call to the
  * system fails.
@@ -62,14 +64,13 @@
 
 /* Get a amqp_time_t that is timeout from now.
  * If timeout is NULL, an amqp_time_infinite() is created.
- * If timeout = {0, 0}, an amqp_time_immediate() is created.
  *
  * Returns AMQP_STATUS_OK on success.
  * AMQP_STATUS_INVALID_PARAMETER if timeout is invalid
  * AMQP_STATUS_TIMER_FAILURE if the underlying call to get the current 
timestamp
  * fails.
  */
-int amqp_time_from_now(amqp_time_t *time, struct timeval *timeout);
+int amqp_time_from_now(amqp_time_t *time, const struct timeval *timeout);
 
 /* Get a amqp_time_t that is seconds from now.
  * If seconds <= 0, then amqp_time_infinite() is created.
@@ -80,9 +81,6 @@
  */
 int amqp_time_s_from_now(amqp_time_t *time, int seconds);
 
-/* Create an immediate amqp_time_t */
-amqp_time_t amqp_time_immediate(void);
-
 /* Create an infinite amqp_time_t */
 amqp_time_t amqp_time_infinite(void);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/librabbitmq/amqp_url.c 
new/rabbitmq-c-0.11.0/librabbitmq/amqp_url.c
--- old/rabbitmq-c-0.10.0/librabbitmq/amqp_url.c        2019-12-02 
05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/librabbitmq/amqp_url.c        2021-04-01 
05:22:03.000000000 +0200
@@ -213,7 +213,7 @@
     res = AMQP_STATUS_OK;
   }
 
-/* Any other delimiter is bad, and we will return AMQP_STATUS_BAD_AMQP_URL. */
+  /* Any other delimiter is bad, and we will return AMQP_STATUS_BAD_AMQP_URL. 
*/
 
 out:
   return res;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/tests/CMakeLists.txt 
new/rabbitmq-c-0.11.0/tests/CMakeLists.txt
--- old/rabbitmq-c-0.10.0/tests/CMakeLists.txt  2019-12-02 05:37:33.000000000 
+0100
+++ new/rabbitmq-c-0.11.0/tests/CMakeLists.txt  2021-04-01 05:22:03.000000000 
+0200
@@ -33,9 +33,11 @@
                test_basic.c)
 target_link_libraries(test_basic rabbitmq-static)
 
-if (NOT APPLE)
-  add_test(basic test_basic)
-endif()
+if (RUN_SYSTEM_TESTS)
+  if (NOT APPLE)
+    add_test(basic test_basic)
+  endif()
+endif(RUN_SYSTEM_TESTS)
 
 add_executable(test_sasl_mechanism test_sasl_mechanism.c)
 target_link_libraries(test_sasl_mechanism rabbitmq-static)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/tools/CMakeLists.txt 
new/rabbitmq-c-0.11.0/tools/CMakeLists.txt
--- old/rabbitmq-c-0.10.0/tools/CMakeLists.txt  2019-12-02 05:37:33.000000000 
+0100
+++ new/rabbitmq-c-0.11.0/tools/CMakeLists.txt  2021-04-01 05:22:03.000000000 
+0200
@@ -45,9 +45,10 @@
 
     file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc)
     set(XMLTO_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/doc/man-date.ent)
+    STRING(TIMESTAMP BUILD_DATE "%Y-%m-%d" UTC)
     add_custom_command(
             OUTPUT ${XMLTO_DEPENDS}
-                 COMMAND date +'%Y-%m-%d' > ${XMLTO_DEPENDS}
+                 COMMAND echo ${BUILD_DATE} > ${XMLTO_DEPENDS}
             VERBATIM
             )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/tools/common.c 
new/rabbitmq-c-0.11.0/tools/common.c
--- old/rabbitmq-c-0.10.0/tools/common.c        2019-12-02 05:37:33.000000000 
+0100
+++ new/rabbitmq-c-0.11.0/tools/common.c        2021-04-01 05:22:03.000000000 
+0200
@@ -240,6 +240,14 @@
       if (ci->port < 0 || ci->port > 65535 || port_end == colon + 1 ||
           *port_end != 0)
         die("bad server port number in '%s'", amqp_server);
+    } else {
+      ci->host = amqp_server;
+      ci->port = 5672;
+#if WITH_SSL
+      if (amqp_ssl) {
+        ci->port = 5671;
+      }
+#endif
     }
 
 #if WITH_SSL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/travis/clang-format.sh 
new/rabbitmq-c-0.11.0/travis/clang-format.sh
--- old/rabbitmq-c-0.10.0/travis/clang-format.sh        2019-12-02 
05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/travis/clang-format.sh        2021-04-01 
05:22:03.000000000 +0200
@@ -2,4 +2,4 @@
 
 set -e
 
-exec clang-format-3.9 -style=file $@
+exec clang-format -style=file $@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rabbitmq-c-0.10.0/travis.sh 
new/rabbitmq-c-0.11.0/travis.sh
--- old/rabbitmq-c-0.10.0/travis.sh     2019-12-02 05:37:33.000000000 +0100
+++ new/rabbitmq-c-0.11.0/travis.sh     2021-04-01 05:22:03.000000000 +0200
@@ -2,13 +2,21 @@
 
 build_cmake() {
   mkdir $PWD/_build && cd $PWD/_build
+  cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/../_install -DCMAKE_C_FLAGS="-Werror 
-Wno-implicit-fallthrough" 
+  cmake --build . --target install
+  ctest -V .
+}
+
+build_macos() {
+  mkdir $PWD/_build && cd $PWD/_build
   cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/../_install -DCMAKE_C_FLAGS="-Werror" \
-    ${_CMAKE_OPENSSL_FLAG}
+    -DOPENSSL_ROOT_DIR="/usr/local/opt/openssl@1.1"
   cmake --build . --target install
   ctest -V .
 }
 
 build_format() {
+  sudo apt-get install -y clang-format
   ./travis/run-clang-format/run-clang-format.py \
     --clang-format-executable="${PWD}/travis/clang-format.sh" \
     --recursive examples librabbitmq tests tools
@@ -17,8 +25,7 @@
 build_coverage() {
   mkdir $PWD/_build && cd $PWD/_build
   cmake .. -DCMAKE_BUILD_TYPE=Coverage -DCMAKE_INSTALL_PREFIX=$PWD/../_install 
\
-    -DCMAKE_C_FLAGS="-Werror -fprofile-arcs -ftest-coverage" \
-    ${_CMAKE_OPENSSL_FLAG}
+    -DCMAKE_C_FLAGS="-Werror -fprofile-arcs -ftest-coverage"
   cmake --build . --target install
   ctest -V .
   
@@ -43,29 +50,21 @@
 }
 
 build_scan-build() {
+  sudo apt-get install -y clang-tools
   mkdir $PWD/_build && cd $PWD/_build
-  scan-build-3.9 cmake .. -DCMAKE_BUILD_TYPE=Debug \
+  scan-build cmake .. -DCMAKE_BUILD_TYPE=Debug \
+    -DCMAKE_C_COMPILER=clang \
     -DCMAKE_INSTALL_PREFIX=$PWD/../_install \
     -DCMAKE_C_FLAGS="-Werror"
-  scan-build-3.9 make install
+  scan-build make install
 }
 
 if [ "$#" -ne 1 ]; then
-  echo "Usage: $0 {cmake|asan|tsan|scan-build}"
+  echo "Usage: $0 {cmake|macos|format|coverage|asan|tsan|scan-build}"
   exit 1
 fi
 
 set -e  # exit on error.
 set -x  # echo commands.
 
-case $TRAVIS_OS_NAME in
-osx)
-  # This prints out a long list of updated packages, which isn't useful.
-  brew update > /dev/null
-  brew install popt
-  brew outdated openssl || brew install openssl
-  export _CMAKE_OPENSSL_FLAG="-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl"
-  ;;
-esac
-
 eval "build_$1"

Reply via email to