]> git.proxmox.com Git - pve-common.git/commitdiff
daemon: add compat code for pmgproxy 6.x
authorStoiko Ivanov <s.ivanov@proxmox.com>
Wed, 5 May 2021 14:36:24 +0000 (16:36 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Fri, 7 May 2021 14:19:29 +0000 (16:19 +0200)
The changes to the listening behavior introduced with PVE 6.4 break
backwardscompatibility w.r.t. listening address and logging, which
should not be changed without explictly notifying the user.

This patch re-adds the family parameter, which is still used by
pmgproxy and based on its existence creates the socket as before.

compared to the IO::Socket::IP->new call used before
390fc10dc4a696dd30646cbdd018ad08d855175f, the only change is the
renaming of 'LocalAddr' to 'LocalHost' (which are synonymous in
IO::Socket::IP [0])

It can simply be reverted with the release of pmg-api 7.0 (where
we'll record the change in the release-notes and upgrade-page)

[0] https://perldoc.perl.org/IO::Socket::IP
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
src/PVE/Daemon.pm

index 2ab4f35bc94a8a291d12884048d51fbb79161711..2095001a1c60592be9831b09523d44b388b0016f 100644 (file)
@@ -799,7 +799,7 @@ sub register_status_command {
 # some useful helper
 
 sub create_reusable_socket {
-    my ($self, $port, $host) = @_;
+    my ($self, $port, $host, $family) = @_;
 
     die "no port specifed" if !$port;
 
@@ -818,7 +818,6 @@ sub create_reusable_socket {
 
        $socket->fcntl(Fcntl::F_SETFD(), Fcntl::FD_CLOEXEC);
     } else {
-
        my %sockargs = (
            LocalPort => $port,
            Listen => SOMAXCONN,
@@ -826,7 +825,16 @@ sub create_reusable_socket {
            GetAddrInfoFlags => 0,
            ReuseAddr => 1,
        );
-       if (defined($host)) {
+
+       # FIXME: drop this if clause and the $family parameter with 7.0:
+       # compat code for pmgproxy
+       if (defined($family)) {
+           $socket = IO::Socket::IP->new(
+               Family => $family,
+               LocalHost => $host,
+               %sockargs) ||
+               die "unable to create socket - $@\n";
+       } elsif (defined($host)) {
            $socket = IO::Socket::IP->new( LocalHost => $host, %sockargs) ||
                die "unable to create socket - $@\n";
        } else {