From a0ecb15991e5faf6aeaa221a7502d60f9eb45d51 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Tue, 30 May 2017 15:30:10 +0200 Subject: [PATCH 1/1] tools: next_unused_port: use IPPROTO_TCP explicitly Otherwise perl tries to bind+listen on a UDP socket if the TCP socket fails - which is a waste since we're looking for TCP ports. Additionall since UDP doesn't support listen(), perl will return EOPNOTSUPP instead of, say, EADDRINUSE. (We don't care about the error in this code though.) --- src/PVE/Tools.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/PVE/Tools.pm b/src/PVE/Tools.pm index 30322b2..da7da5d 100644 --- a/src/PVE/Tools.pm +++ b/src/PVE/Tools.pm @@ -4,7 +4,8 @@ use strict; use warnings; use POSIX qw(EINTR EEXIST EOPNOTSUPP); use IO::Socket::IP; -use Socket qw(AF_INET AF_INET6 AI_ALL AI_V4MAPPED AI_CANONNAME SOCK_DGRAM); +use Socket qw(AF_INET AF_INET6 AI_ALL AI_V4MAPPED AI_CANONNAME SOCK_DGRAM + IPPROTO_TCP); use IO::Select; use File::Basename; use File::Path qw(make_path); @@ -789,7 +790,7 @@ sub next_unused_port { my %sockargs = (Listen => 5, ReuseAddr => 1, Family => $family, - Proto => 0, + Proto => IPPROTO_TCP, GetAddrInfoFlags => 0); $sockargs{LocalAddr} = $address if defined($address); -- 2.39.2