Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package perl-Net-AMQP-RabbitMQ for
openSUSE:Factory checked in at 2021-10-26 20:14:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Net-AMQP-RabbitMQ (Old)
and /work/SRC/openSUSE:Factory/.perl-Net-AMQP-RabbitMQ.new.1890 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Net-AMQP-RabbitMQ"
Tue Oct 26 20:14:10 2021 rev:4 rq:927518 version:2.40009
Changes:
--------
---
/work/SRC/openSUSE:Factory/perl-Net-AMQP-RabbitMQ/perl-Net-AMQP-RabbitMQ.changes
2020-10-22 14:26:58.631003165 +0200
+++
/work/SRC/openSUSE:Factory/.perl-Net-AMQP-RabbitMQ.new.1890/perl-Net-AMQP-RabbitMQ.changes
2021-10-26 20:14:55.162048652 +0200
@@ -1,0 +2,15 @@
+Sun Oct 24 03:07:06 UTC 2021 - Tina M??ller <[email protected]>
+
+- updated to 2.40009
+ see /usr/share/doc/packages/perl-Net-AMQP-RabbitMQ/Changes
+
+ 2.40009 - 2021-10-23
+ - Fixed a process where subprocess closed the parent process's
connection - fixes #202
+ - Changed over to GitHub Actions from TravisCI
+ - Added support for librabbitmq-c's RPC timeout functionality. - fixes
#206
+ - Updated to use the latest rabbitmq-c version.
+ - Merged #201, which allows setting `client_properties` in connect.
+ - Merged #200, which fixes minor document typos - fixes #199
+ - Merged #198, which adds minor documentation clarification - fixes #61
+
+-------------------------------------------------------------------
Old:
----
Net-AMQP-RabbitMQ-2.40008.tar.gz
New:
----
Net-AMQP-RabbitMQ-2.40009.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Net-AMQP-RabbitMQ.spec ++++++
--- /var/tmp/diff_new_pack.nbvU34/_old 2021-10-26 20:14:55.622048895 +0200
+++ /var/tmp/diff_new_pack.nbvU34/_new 2021-10-26 20:14:55.626048897 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-Net-AMQP-RabbitMQ
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,18 +16,16 @@
#
+%define cpan_name Net-AMQP-RabbitMQ
Name: perl-Net-AMQP-RabbitMQ
-Version: 2.40008
+Version: 2.40009
Release: 0
#Upstream: MPL
-%define cpan_name Net-AMQP-RabbitMQ
Summary: Interact with RabbitMQ over AMQP using librabbitmq
License: MPL-1.1
-Group: Development/Libraries/Perl
URL: https://metacpan.org/release/%{cpan_name}
Source0:
https://cpan.metacpan.org/authors/id/M/MS/MSTEMLE/%{cpan_name}-%{version}.tar.gz
Source1: cpanspec.yml
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: perl
BuildRequires: perl-macros
BuildRequires: perl(Math::Int64) >= 0.34
@@ -47,11 +45,11 @@
you appropriately catch the errors.
%prep
-%setup -q -n %{cpan_name}-%{version}
+%autosetup -n %{cpan_name}-%{version}
%build
perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="%{optflags}"
-make %{?_smp_mflags}
+%make_build
%check
# MANUAL no testing (needs network)
@@ -63,7 +61,6 @@
%perl_gen_filelist
%files -f %{name}.files
-%defattr(-,root,root,755)
%doc Changes CONTRIBUTING.md README.md
%license LICENSE LICENSE-MIT
++++++ Net-AMQP-RabbitMQ-2.40008.tar.gz -> Net-AMQP-RabbitMQ-2.40009.tar.gz
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Net-AMQP-RabbitMQ-2.40008/Changes
new/Net-AMQP-RabbitMQ-2.40009/Changes
--- old/Net-AMQP-RabbitMQ-2.40008/Changes 2020-10-01 02:46:47.000000000
+0200
+++ new/Net-AMQP-RabbitMQ-2.40009/Changes 2021-10-23 20:17:46.000000000
+0200
@@ -1,5 +1,14 @@
Revision history for perl module Net::AMQP::RabbitMQ
+2.40009 - 2021-10-23
+ - Fixed a process where subprocess closed the parent process's connection
- fixes #202
+ - Changed over to GitHub Actions from TravisCI
+ - Added support for librabbitmq-c's RPC timeout functionality. - fixes #206
+ - Updated to use the latest rabbitmq-c version.
+ - Merged #201, which allows setting `client_properties` in connect.
+ - Merged #200, which fixes minor document typos - fixes #199
+ - Merged #198, which adds minor documentation clarification - fixes #61
+
2.40008 - 2020-09-30
- Merged #195, to update Sectigo CA - fixes #194
@@ -235,7 +244,7 @@
- add a connect timeout that both times out connect() calls and
sets SO_{SND.RCV}TIMEO on the socket
- add a heartbeat method
- - a hearbeat frame can be received in the internal_recv function
+ - a heartbeat frame can be received in the internal_recv function
causing an unexpected failure consuming; these are now ignored.
- make queue_declare return message and consumer counts (additionally)
when called in array context.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Net-AMQP-RabbitMQ-2.40008/META.json
new/Net-AMQP-RabbitMQ-2.40009/META.json
--- old/Net-AMQP-RabbitMQ-2.40008/META.json 2020-10-01 03:31:59.000000000
+0200
+++ new/Net-AMQP-RabbitMQ-2.40009/META.json 2021-10-23 20:22:07.000000000
+0200
@@ -4,7 +4,7 @@
"Mark Ellis <[email protected]>, Michael Stemle, Jr. <[email protected]>"
],
"dynamic_config" : 1,
- "generated_by" : "ExtUtils::MakeMaker version 7.44, CPAN::Meta::Converter
version 2.150010",
+ "generated_by" : "ExtUtils::MakeMaker version 7.62, CPAN::Meta::Converter
version 2.150010",
"license" : [
"mozilla_1_1"
],
@@ -56,11 +56,11 @@
"web" : "https://github.com/net-amqp-rabbitmq/net-amqp-rabbitmq"
}
},
- "version" : "2.40008",
+ "version" : "2.40009",
"x_contributors" : [
"jesus - Theo Schlossnagle <[email protected]>",
"markellis - Mark Ellis <[email protected]>",
- "mstemle - Michael Stemle, Jr. <[email protected]>",
+ "mstemle - Mike \"manchicken\" Stemle, Jr. <[email protected]>",
"drolsky - Dave Rolsky <[email protected]>",
"srezic - Slaven Rezi?? <[email protected]>",
"armand - Armand Leclercq <[email protected]>",
@@ -71,5 +71,5 @@
"FGA - Fabrice Gabolde <[email protected]>",
"ikegami - Eric Brine <[email protected]>"
],
- "x_serialization_backend" : "JSON::PP version 4.04"
+ "x_serialization_backend" : "JSON::PP version 4.06"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Net-AMQP-RabbitMQ-2.40008/META.yml
new/Net-AMQP-RabbitMQ-2.40009/META.yml
--- old/Net-AMQP-RabbitMQ-2.40008/META.yml 2020-10-01 03:31:59.000000000
+0200
+++ new/Net-AMQP-RabbitMQ-2.40009/META.yml 2021-10-23 20:22:07.000000000
+0200
@@ -10,7 +10,7 @@
configure_requires:
ExtUtils::MakeMaker: '0'
dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 7.44, CPAN::Meta::Converter version
2.150010'
+generated_by: 'ExtUtils::MakeMaker version 7.62, CPAN::Meta::Converter version
2.150010'
license: mozilla
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -27,11 +27,11 @@
resources:
bugtracker: https://github.com/net-amqp-rabbitmq/net-amqp-rabbitmq/issues
repository: git://github.com/net-amqp-rabbitmq/net-amqp-rabbitmq.git
-version: '2.40008'
+version: '2.40009'
x_contributors:
- 'jesus - Theo Schlossnagle <[email protected]>'
- 'markellis - Mark Ellis <[email protected]>'
- - 'mstemle - Michael Stemle, Jr. <[email protected]>'
+ - 'mstemle - Mike "manchicken" Stemle, Jr. <[email protected]>'
- 'drolsky - Dave Rolsky <[email protected]>'
- 'srezic - Slaven Rezi?? <[email protected]>'
- 'armand - Armand Leclercq <[email protected]>'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Net-AMQP-RabbitMQ-2.40008/Makefile.PL
new/Net-AMQP-RabbitMQ-2.40009/Makefile.PL
--- old/Net-AMQP-RabbitMQ-2.40008/Makefile.PL 2020-10-01 02:37:00.000000000
+0200
+++ new/Net-AMQP-RabbitMQ-2.40009/Makefile.PL 2021-10-02 17:30:11.000000000
+0200
@@ -1,10 +1,10 @@
use strict;
use warnings;
-require 5.008 ;
+require 5.008;
use utf8;
use lib qw(inc);
-use ExtUtils::MakeMaker 5.16 ;
+use ExtUtils::MakeMaker 5.16;
use Config;
use Devel::CheckLib;
@@ -13,14 +13,14 @@
my $has_htonll = check_lib(
'function' => '
#ifdef htonll
-return 0;
+ return 0;
#else
-return -1;
+ return -1;
#endif
-',
+ ',
'header' => ['arpa/inet.h','stdio.h'],
'lib' => 'c',
-);
+ );
#XXX i wonder if we should check for socket and poll...
my @defines = ('-DHAVE_SOCKET', '-DHAVE_POLL',
qq/-DAMQ_PLATFORM='"Perl_$^O_$^V"'/);
@@ -31,48 +31,45 @@
my %checklib_extra_options;
if ( $^O eq 'darwin') {
- my $osx_openssl_path = -d "/usr/local/opt/openssl"
- ? "/usr/local/opt/openssl"
- : -d "/opt/local"
- ? "/opt/local" : "/usr/local";
-
- my $libpath = "${osx_openssl_path}/lib";
- my $incpath = "${osx_openssl_path}/include";
-
- push @libs, "-L$libpath";
- push @inc, "-I$incpath";
-
- $checklib_extra_options{libpath} = $libpath;
- $checklib_extra_options{incpath} = $incpath;
+ eval {
+ require ExtUtils::PkgConfig;
+ push @libs, ExtUtils::PkgConfig->libs('openssl');
+ push @inc, ExtUtils::PkgConfig->cflags('openssl');
+
+ $checklib_extra_options{LIBS} =
ExtUtils::PkgConfig->libs_only_L('openssl');
+ $checklib_extra_options{INC} =
ExtUtils::PkgConfig->cflags_only_I('openssl');
+ }; if ($@) {
+ print "Unable to figure out where SSL is using pkg-config: $@\n";
+ }
}
my $has_openssl = check_lib(
lib => [qw/ssl crypto/],
header => 'openssl/conf.h',
%checklib_extra_options,
-);
+ );
if ( $has_openssl ) {
- push @defines, '-DNAR_HAVE_OPENSSL';
- push @libs, '-lssl', '-lcrypto';
- if ( $^O eq 'MSWin32' ) {
- push @inc, "-Irabbitmq-include/win32";
- }
- else {
- push @inc, "-Irabbitmq-include/unix";
- }
+ push @defines, '-DNAR_HAVE_OPENSSL';
+ push @libs, '-lssl', '-lcrypto';
+ if ( $^O eq 'MSWin32' ) {
+ push @inc, "-Irabbitmq-include/win32";
+ }
+ else {
+ push @inc, "-Irabbitmq-include/unix";
+ }
}
my $ofiles = '';
foreach ( <*.c> ){
- next if ( $_ =~ m/assertlib/ );
- next if ( ( $_ eq 'amqp_openssl.c' ) && !$has_openssl );
- next if ( ( $_ eq 'threads.c' ) && ( $^O ne 'MSWin32' ) );
+ next if ( $_ =~ m/assertlib/ );
+ next if ( ( $_ eq 'amqp_openssl.c' ) && !$has_openssl );
+ next if ( ( $_ eq 'threads.c' ) && ( $^O ne 'MSWin32' ) );
- #this shouldn't exist unless the build dir is unclean. so ignore it
- next if $_ eq 'RabbitMQ.c';
+#this shouldn't exist unless the build dir is unclean. so ignore it
+ next if $_ eq 'RabbitMQ.c';
- $_ =~ s/.c$/.o/;
- $ofiles .= "$_ ";
+ $_ =~ s/.c$/.o/;
+ $ofiles .= "$_ ";
}
my %WriteMakefileArgs = (
@@ -87,48 +84,48 @@
LIBS => join( ' ', @libs ),
INC => join( ' ', @inc ),
PREREQ_PM => {
- 'Math::Int64' => '0.34',
- 'Scalar::Util' => '0',
- 'XSLoader' => '0',
+ 'Math::Int64' => '0.34',
+ 'Scalar::Util' => '0',
+ 'XSLoader' => '0',
},
TEST_REQUIRES => {
- 'Sys::Hostname' => '0',
- 'Test::More' => '0',
- 'Time::HiRes' => '0',
+ 'Sys::Hostname' => '0',
+ 'Test::More' => '0',
+ 'Time::HiRes' => '0',
},
META_MERGE => {
- "meta-spec" => { version => 2 },
- "dynamic_config" => 1,
- "x_contributors" => [
- 'jesus - Theo Schlossnagle <[email protected]>',
- 'markellis - Mark Ellis <[email protected]>',
- 'mstemle - Michael Stemle, Jr. <[email protected]>',
- 'drolsky - Dave Rolsky <[email protected]>',
- 'srezic - Slaven Rezi?? <[email protected]>',
- 'armand - Armand Leclercq <[email protected]>',
- 'dburke - Daniel W Burke <[email protected]>',
- 'davsx - D??vid Kov??cs <[email protected]>',
- 'iron-s - Alexey Sheynuk',
- 'ether - Karen Etheridge <[email protected]>',
- 'FGA - Fabrice Gabolde <[email protected]>',
- 'ikegami - Eric Brine <[email protected]>',
- ],
- resources => {
- bugtracker => {
- web =>
'https://github.com/net-amqp-rabbitmq/net-amqp-rabbitmq/issues',
- },
- repository => {
- type => 'git',
- url =>
'git://github.com/net-amqp-rabbitmq/net-amqp-rabbitmq.git',
- web =>
'https://github.com/net-amqp-rabbitmq/net-amqp-rabbitmq',
- },
+ "meta-spec" => { version => 2 },
+ "dynamic_config" => 1,
+ "x_contributors" => [
+ 'jesus - Theo Schlossnagle <[email protected]>',
+ 'markellis - Mark Ellis <[email protected]>',
+ 'mstemle - Mike "manchicken" Stemle, Jr. <[email protected]>',
+ 'drolsky - Dave Rolsky <[email protected]>',
+ 'srezic - Slaven Rezi?? <[email protected]>',
+ 'armand - Armand Leclercq <[email protected]>',
+ 'dburke - Daniel W Burke <[email protected]>',
+ 'davsx - D??vid Kov??cs <[email protected]>',
+ 'iron-s - Alexey Sheynuk',
+ 'ether - Karen Etheridge <[email protected]>',
+ 'FGA - Fabrice Gabolde <[email protected]>',
+ 'ikegami - Eric Brine <[email protected]>',
+ ],
+ resources => {
+ bugtracker => {
+ web =>
'https://github.com/net-amqp-rabbitmq/net-amqp-rabbitmq/issues',
+ },
+ repository => {
+ type => 'git',
+ url => 'git://github.com/net-amqp-rabbitmq/net-amqp-rabbitmq.git',
+ web => 'https://github.com/net-amqp-rabbitmq/net-amqp-rabbitmq',
},
+ },
},
-);
+ );
if (!eval { ExtUtils::MakeMaker->VERSION('6.6303') }) {
- $WriteMakefileArgs{BUILD_REQUIRES} = $WriteMakefileArgs{TEST_REQUIRES};
- delete $WriteMakefileArgs{TEST_REQUIRES};
+ $WriteMakefileArgs{BUILD_REQUIRES} = $WriteMakefileArgs{TEST_REQUIRES};
+ delete $WriteMakefileArgs{TEST_REQUIRES};
}
WriteMakefile(%WriteMakefileArgs);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Net-AMQP-RabbitMQ-2.40008/README.md
new/Net-AMQP-RabbitMQ-2.40009/README.md
--- old/Net-AMQP-RabbitMQ-2.40008/README.md 2020-10-01 02:37:00.000000000
+0200
+++ new/Net-AMQP-RabbitMQ-2.40009/README.md 2021-10-06 03:43:00.000000000
+0200
@@ -48,7 +48,26 @@
MQSSL=1 prove -I blib/lib -I blib/arch -v t/
```
-#To build a release
+# To build a release
+
+```sh
perl Makefile.PL
make manifest
make dist
+```
+
+# Special note for macOS
+
+You need `pkg-config` working, especially for openssl. There are so many
different
+ways to install dependencies, and so many different paths for them, it is
becoming
+very difficult to guess where they will be.
+
+As a result, we're shifting to using `pkg-config` for this. Please make sure
+that if you're running into any problems of missing symbols or misplaced files,
+that you check this _first_.
+
+# OpenSSL Compatibility
+
+So far we have been testing with OpenSSL 1.1. We appear to be good there, but
+OpenSSL 3 is not supported at this time.
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Net-AMQP-RabbitMQ-2.40008/RabbitMQ.pm
new/Net-AMQP-RabbitMQ-2.40009/RabbitMQ.pm
--- old/Net-AMQP-RabbitMQ-2.40008/RabbitMQ.pm 2020-10-01 02:46:47.000000000
+0200
+++ new/Net-AMQP-RabbitMQ-2.40009/RabbitMQ.pm 2021-10-23 20:17:46.000000000
+0200
@@ -2,7 +2,7 @@
use strict;
use warnings;
-our $VERSION = '2.40008';
+our $VERSION = '2.40009';
use XSLoader;
XSLoader::load "Net::AMQP::RabbitMQ", $VERSION;
@@ -55,6 +55,13 @@
should be making good use of C<eval> around these methods to ensure that you
appropriately catch the errors.
+=head1 INSTALLATION
+
+C<cpanm Net::AMQP::RabbitMQ> or C<cpan Net::AMQP::RabbitMQ>
+
+Note that the C<Net::AMQP::RabbitMQ> module includes the associated librabbitmq
+C library. Thus there is no need to install this separately beforehand.
+
=head1 METHODS
All methods, unless specifically stated, return nothing on success
@@ -81,7 +88,7 @@
vhost => $vhost, #default '/'
channel_max => $cmax, #default 0
frame_max => $fmax, #default 131072
- heartbeat => $hearbeat, #default 0
+ heartbeat => $heartbeat, #default 0
timeout => $seconds, #default undef (no timeout)
ssl => 1 | 0, #default 0
@@ -499,6 +506,30 @@
C<$channel> is a channel that has been opened with C<channel_open>.
+=head2 get_rpc_timeout()
+
+Return the RPC timeout on the current connection.
+
+The value returned will be either C<undef>, if the RPC timeout is
+unlimited, or a hashref with C<tv_sec> for the number of seconds and
+C<tv_usec> for the number of microseconds.
+
+=head2 set_rpc_timeout({ tv_sec => SECONDS, tv_usec => MICROSECONDS })
+
+Set the RPC timeout for the current connection, using the seconds
+(C<tv_sec>) and microseconds (C<tv_usec>) provided. The arguments
+supplied can be either in the form of a hash or a hashref, so all of
+the following are valid:
+
+ $mq->set_rpc_timeout(tv_sec => 10, tv_usec => 500000)
+ $mq->set_rpc_timeout( { tv_sec => 10, tv_usec => 500000 } )
+ $mq->set_rpc_timeout(tv_sec => 10)
+ $mq->set_rpc_timeout(tv_usec => 500000)
+
+In order to remove the time limit for RPC calls, simply pass C<undef>.
+
+ $mq->set_rpc_timeout( undef )
+
=head2 basic_qos($channel, $options)
Set quality of service flags on the current $channel.
@@ -519,6 +550,9 @@
you must send a heartbeat periodically matching connection parameter or
the server may snip the connection.
+Note that since C<recv> blocks for up to C<$timeout> milliseconds,
+it automatically handles sending heartbeats for you while active.
+
=head2 has_ssl
Returns true if the module was compiled with SSL support, false otherwise
@@ -685,7 +719,7 @@
Mark Ellis E<lt>[email protected]<gt>
-Michael Stemle, Jr. E<lt>[email protected]<gt>
+Mike "manchicken" Stemle, Jr. E<lt>[email protected]<gt>
Dave Rolsky E<lt>[email protected]<gt>
@@ -751,11 +785,28 @@
$self->_publish($channel, $routing_key, $body, $options, $props);
}
+sub set_rpc_timeout {
+ my ($self, @opts) = @_;
+
+ my $args = undef;
+
+ # Be kind on whether or not we receive a hashref
+ # or an actual hash.
+ if ((scalar @opts % 2) == 0) {
+ $args = { @opts };
+ } elsif ( scalar @opts == 1 && defined $opts[0]) {
+ $args = $opts[0];
+ }
+
+ return $self->_set_rpc_timeout( $args );
+}
+
sub DESTROY {
my ($self) = @_;
- $self->_destroy_connection_close
- if !$have_fieldhash || $pids{$self} && $pids{$self} == $$;
- $self->_destroy_cleanup;
+ if (!$have_fieldhash || $pids{$self} && $pids{$self} == $$) {
+ $self->_destroy_connection_close;
+ $self->_destroy_cleanup;
+ }
}
1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Net-AMQP-RabbitMQ-2.40008/RabbitMQ.xs
new/Net-AMQP-RabbitMQ-2.40009/RabbitMQ.xs
--- old/Net-AMQP-RabbitMQ-2.40008/RabbitMQ.xs 2020-10-01 02:37:00.000000000
+0200
+++ new/Net-AMQP-RabbitMQ-2.40009/RabbitMQ.xs 2021-10-23 20:17:46.000000000
+0200
@@ -30,6 +30,7 @@
/* perl Makefile.PL; make CCFLAGS=-DDEBUG */
#if DEBUG
#define __DEBUG__(X) X
+ extern void dump_table(amqp_table_t table);
#else
#define __DEBUG__(X) /* NOOP */
#endif
@@ -1134,10 +1135,11 @@
PERL_MATH_INT64_LOAD_OR_CROAK;
int
-net_amqp_rabbitmq_connect(conn, hostname, options)
+net_amqp_rabbitmq_connect(conn, hostname, options, client_properties = NULL)
Net::AMQP::RabbitMQ conn
char *hostname
HV *options
+ HV *client_properties
PREINIT:
amqp_socket_t *sock;
char *user = "guest";
@@ -1158,6 +1160,7 @@
int ssl_init = 1;
char *sasl_method = "plain";
amqp_sasl_method_enum sasl_type = AMQP_SASL_METHOD_PLAIN;
+ amqp_table_t client_properties_tbl = amqp_empty_table;
CODE:
str_from_hv(options, user);
str_from_hv(options, password);
@@ -1176,6 +1179,11 @@
int_from_hv(options, ssl_init);
str_from_hv(options, sasl_method);
+ if(client_properties)
+ {
+ hash_to_amqp_table(client_properties, &client_properties_tbl, 1);
+ }
+
if(timeout >= 0) {
to.tv_sec = floor(timeout);
to.tv_usec = 1000000.0 * (timeout - floor(timeout));
@@ -1229,7 +1237,7 @@
}
die_on_error(aTHX_ amqp_socket_open_noblock(sock, hostname, port,
(timeout<0)?NULL:&to), conn, "opening socket");
- die_on_amqp_error(aTHX_ amqp_login(conn, vhost, channel_max, frame_max,
heartbeat, sasl_type, user, password), conn, "Logging in");
+ die_on_amqp_error(aTHX_ amqp_login_with_properties(conn, vhost,
channel_max, frame_max, heartbeat, &client_properties_tbl, sasl_type, user,
password), conn, "Logging in");
maybe_release_buffers(conn);
@@ -1286,17 +1294,25 @@
{
hash_to_amqp_table(args, &arguments, 1);
}
- amqp_exchange_declare(
- conn,
- channel,
- amqp_cstring_bytes(exchange),
- amqp_cstring_bytes(exchange_type),
- passive,
- (amqp_boolean_t)durable,
- (amqp_boolean_t)auto_delete,
- (amqp_boolean_t)internal,
- arguments
+ __DEBUG__(
+ warn("%d: amqp_declare_exchange with channel:%d, exchange:%s, and
exchange_type:%s\n",
+ __LINE__,
+ channel,
+ exchange,
+ exchange_type
+ );
+ dump_table(arguments);
);
+ amqp_exchange_declare(
+ conn,
+ channel,
+ amqp_cstring_bytes(exchange),
+ amqp_cstring_bytes(exchange_type),
+ passive,
+ (amqp_boolean_t)durable,
+ (amqp_boolean_t)auto_delete,
+ (amqp_boolean_t)internal,
+ arguments);
maybe_release_buffers(conn);
die_on_amqp_error(aTHX_ amqp_get_rpc_reply(conn), conn, "Declaring
exchange");
@@ -1926,6 +1942,60 @@
amqp_tx_rollback(conn, channel);
die_on_amqp_error(aTHX_ amqp_get_rpc_reply(conn), conn, "Rolling Back
transaction");
+SV* net_amqp_rabbitmq_get_rpc_timeout(conn)
+ Net::AMQP::RabbitMQ conn
+ PREINIT:
+ struct timeval *timeout_tv;
+ HV *output;
+ CODE:
+ timeout_tv = amqp_get_rpc_timeout(conn);
+ if (timeout_tv == NULL) {
+ __DEBUG__( warn("%d get_rpc_timeout: Timeout is NULL, returning undef.",
__LINE__) );
+ RETVAL = &PL_sv_undef;
+ } else {
+ __DEBUG__( warn("%d get_rpc_timeout: Timeout is non-NULL, returning
hashref.", __LINE__) );
+ output = newHV();
+ hv_stores(output, "tv_sec", newSVi64( timeout_tv->tv_sec ));
+ hv_stores(output, "tv_usec", newSVi64( timeout_tv->tv_usec ));
+ RETVAL = newRV_noinc( output );
+ }
+ OUTPUT:
+ RETVAL
+
+void net_amqp_rabbitmq__set_rpc_timeout(conn, args = NULL)
+ Net::AMQP::RabbitMQ conn
+ SV* args
+ PREINIT:
+ struct timeval timeout = {0,0};
+ struct timeval *old_timeout = NULL;
+ int tv_sec = 0;
+ int tv_usec = 0;
+ int res = 0;
+ CODE:
+ old_timeout = amqp_get_rpc_timeout(conn);
+
+ // If we are setting the RPC timeout to NULL...
+ if (args == NULL || !SvOK(args) || args == &PL_sv_undef) {
+ __DEBUG__( warn("%d set_rpc_timeout: No args. Setting to unlimited RPC
timeout.", __LINE__) );
+
+ if (old_timeout != NULL) {
+ __DEBUG__( warn("%d set_rpc_timeout: Changing to unlimited RPC
timeout.", __LINE__) );
+ amqp_set_rpc_timeout( conn, NULL );
+ }
+ }
+
+ // If we are setting the RPC timeout to something other than NULL...
+ else {
+ int_from_hv(SvRV(args), tv_sec);
+ int_from_hv(SvRV(args), tv_usec);
+ __DEBUG__( warn("%d set_rpc_timeout: Setting to tv_sec:%d and
tv_usec:%d.", __LINE__, tv_sec, tv_usec) );
+ // If we need to allocate the timeout...
+
+ timeout.tv_sec = tv_sec;
+ timeout.tv_usec = tv_usec;
+ die_on_error(aTHX_ amqp_set_rpc_timeout(conn, &timeout), conn, "Set RPC
Timeout");
+ }
+
void
net_amqp_rabbitmq_basic_qos(conn, channel, args = NULL)
Net::AMQP::RabbitMQ conn
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Net-AMQP-RabbitMQ-2.40008/amqp_api.c
new/Net-AMQP-RabbitMQ-2.40009/amqp_api.c
--- old/Net-AMQP-RabbitMQ-2.40008/amqp_api.c 2020-10-01 02:55:49.000000000
+0200
+++ new/Net-AMQP-RabbitMQ-2.40009/amqp_api.c 2021-10-23 20:21:35.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)";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Net-AMQP-RabbitMQ-2.40008/amqp_connection.c
new/Net-AMQP-RabbitMQ-2.40009/amqp_connection.c
--- old/Net-AMQP-RabbitMQ-2.40008/amqp_connection.c 2020-10-01
02:55:49.000000000 +0200
+++ new/Net-AMQP-RabbitMQ-2.40009/amqp_connection.c 2021-10-23
20:21:35.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/Net-AMQP-RabbitMQ-2.40008/amqp_openssl.c
new/Net-AMQP-RabbitMQ-2.40009/amqp_openssl.c
--- old/Net-AMQP-RabbitMQ-2.40008/amqp_openssl.c 2020-10-01
02:55:49.000000000 +0200
+++ new/Net-AMQP-RabbitMQ-2.40009/amqp_openssl.c 2021-10-23
20:21:35.000000000 +0200
@@ -63,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 { \
@@ -412,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");
@@ -469,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);
@@ -633,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));
@@ -687,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);
{
@@ -701,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/Net-AMQP-RabbitMQ-2.40008/amqp_socket.c
new/Net-AMQP-RabbitMQ-2.40009/amqp_socket.c
--- old/Net-AMQP-RabbitMQ-2.40008/amqp_socket.c 2020-10-01 02:55:49.000000000
+0200
+++ new/Net-AMQP-RabbitMQ-2.40009/amqp_socket.c 2021-10-23 20:21:35.000000000
+0200
@@ -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);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Net-AMQP-RabbitMQ-2.40008/amqp_table.c
new/Net-AMQP-RabbitMQ-2.40009/amqp_table.c
--- old/Net-AMQP-RabbitMQ-2.40008/amqp_table.c 2020-10-01 02:55:49.000000000
+0200
+++ new/Net-AMQP-RabbitMQ-2.40009/amqp_table.c 2021-10-23 20:21:35.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/Net-AMQP-RabbitMQ-2.40008/amqp_time.c
new/Net-AMQP-RabbitMQ-2.40009/amqp_time.c
--- old/Net-AMQP-RabbitMQ-2.40008/amqp_time.c 2020-10-01 02:55:49.000000000
+0200
+++ new/Net-AMQP-RabbitMQ-2.40009/amqp_time.c 2021-10-23 20:21:35.000000000
+0200
@@ -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/Net-AMQP-RabbitMQ-2.40008/amqp_url.c
new/Net-AMQP-RabbitMQ-2.40009/amqp_url.c
--- old/Net-AMQP-RabbitMQ-2.40008/amqp_url.c 2020-10-01 02:55:49.000000000
+0200
+++ new/Net-AMQP-RabbitMQ-2.40009/amqp_url.c 2021-10-23 20:21:35.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/Net-AMQP-RabbitMQ-2.40008/rabbitmq-include/amqp.h
new/Net-AMQP-RabbitMQ-2.40009/rabbitmq-include/amqp.h
--- old/Net-AMQP-RabbitMQ-2.40008/rabbitmq-include/amqp.h 2020-10-01
02:55:49.000000000 +0200
+++ new/Net-AMQP-RabbitMQ-2.40009/rabbitmq-include/amqp.h 2021-10-23
20:21:35.000000000 +0200
@@ -221,7 +221,7 @@
#define AMQP_VERSION_MAJOR 0
#define AMQP_VERSION_MINOR 11
#define AMQP_VERSION_PATCH 0
-#define AMQP_VERSION_IS_RELEASE 0
+#define AMQP_VERSION_IS_RELEASE 1
/**
* \def AMQP_VERSION_CODE
@@ -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
@@ -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;
/**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Net-AMQP-RabbitMQ-2.40008/rabbitmq-include/amqp_framing.h
new/Net-AMQP-RabbitMQ-2.40009/rabbitmq-include/amqp_framing.h
--- old/Net-AMQP-RabbitMQ-2.40008/rabbitmq-include/amqp_framing.h
2020-10-01 02:55:49.000000000 +0200
+++ new/Net-AMQP-RabbitMQ-2.40009/rabbitmq-include/amqp_framing.h
2021-10-23 20:21:35.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/Net-AMQP-RabbitMQ-2.40008/rabbitmq-include/amqp_openssl_hostname_validation.h
new/Net-AMQP-RabbitMQ-2.40009/rabbitmq-include/amqp_openssl_hostname_validation.h
---
old/Net-AMQP-RabbitMQ-2.40008/rabbitmq-include/amqp_openssl_hostname_validation.h
2020-10-01 02:55:49.000000000 +0200
+++
new/Net-AMQP-RabbitMQ-2.40009/rabbitmq-include/amqp_openssl_hostname_validation.h
2021-10-23 20:21:35.000000000 +0200
@@ -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/Net-AMQP-RabbitMQ-2.40008/rabbitmq-include/amqp_ssl_socket.h
new/Net-AMQP-RabbitMQ-2.40009/rabbitmq-include/amqp_ssl_socket.h
--- old/Net-AMQP-RabbitMQ-2.40008/rabbitmq-include/amqp_ssl_socket.h
2020-10-01 02:55:49.000000000 +0200
+++ new/Net-AMQP-RabbitMQ-2.40009/rabbitmq-include/amqp_ssl_socket.h
2021-10-23 20:21:35.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/Net-AMQP-RabbitMQ-2.40008/rabbitmq-include/amqp_time.h
new/Net-AMQP-RabbitMQ-2.40009/rabbitmq-include/amqp_time.h
--- old/Net-AMQP-RabbitMQ-2.40008/rabbitmq-include/amqp_time.h 2020-10-01
02:55:49.000000000 +0200
+++ new/Net-AMQP-RabbitMQ-2.40009/rabbitmq-include/amqp_time.h 2021-10-23
20:21:35.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,7 +64,6 @@
/* 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
@@ -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/Net-AMQP-RabbitMQ-2.40008/t/lib/NAR/Helper.pm
new/Net-AMQP-RabbitMQ-2.40009/t/lib/NAR/Helper.pm
--- old/Net-AMQP-RabbitMQ-2.40008/t/lib/NAR/Helper.pm 2020-10-01
02:37:00.000000000 +0200
+++ new/Net-AMQP-RabbitMQ-2.40009/t/lib/NAR/Helper.pm 2021-10-02
01:44:28.000000000 +0200
@@ -142,6 +142,23 @@
} );
}
+sub get_connection_options {
+ my ( $self ) = @_;
+
+ return {
+ user => $self->{username},
+ password => $self->{password},
+ port => $self->{port},
+ ssl => $self->{ssl},
+ ssl_verify_host => $self->{ssl_verify_host},
+ ssl_verify_peer => $self->{ssl_verify_peer},
+ ssl_cacert => $self->{ssl_cacert},
+ ssl_init => $self->{ssl_init},
+ vhost => $self->{vhost},
+ };
+
+}
+
sub heartbeat {
my $self = shift;