mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-08-17 12:08:28 +00:00
spiceproxy: keep socket open on restart
This commit is contained in:
parent
de72f7ee54
commit
e1cc2687ef
@ -61,17 +61,37 @@ sub init {
|
|||||||
my $lockfh = IO::File->new(">>${accept_lock_fn}") ||
|
my $lockfh = IO::File->new(">>${accept_lock_fn}") ||
|
||||||
die "unable to open lock file '${accept_lock_fn}' - $!\n";
|
die "unable to open lock file '${accept_lock_fn}' - $!\n";
|
||||||
|
|
||||||
my $socket = IO::Socket::INET->new(
|
my ($socket, $sockfd);
|
||||||
LocalAddr => undef, # all interfaces
|
|
||||||
LocalPort => 3128,
|
|
||||||
Listen => SOMAXCONN,
|
|
||||||
Proto => 'tcp',
|
|
||||||
ReuseAddr => 1) ||
|
|
||||||
die "unable to create socket - $@\n";
|
|
||||||
|
|
||||||
# we often observe delays when using Nagle algorithm,
|
if (defined($sockfd = $ENV{PVE_DAEMON_SOCKET_3128}) &&
|
||||||
# so we disable that to maximize performance
|
$self->{env_restart_pve_daemon}) {
|
||||||
setsockopt($socket, IPPROTO_TCP, TCP_NODELAY, 1);
|
|
||||||
|
die "unable to parse socket fd '$sockfd'\n"
|
||||||
|
if $sockfd !~ m/^(\d+)$/;
|
||||||
|
$sockfd = $1; # untaint
|
||||||
|
|
||||||
|
$socket = IO::Socket::INET->new;
|
||||||
|
$socket->fdopen($sockfd, 'w') ||
|
||||||
|
die "cannot fdopen file descriptor '$sockfd' - $!\n";
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$socket = IO::Socket::INET->new(
|
||||||
|
LocalAddr => undef, # all interfaces
|
||||||
|
LocalPort => 3128,
|
||||||
|
Listen => SOMAXCONN,
|
||||||
|
Proto => 'tcp',
|
||||||
|
ReuseAddr => 1) ||
|
||||||
|
die "unable to create socket - $@\n";
|
||||||
|
|
||||||
|
# we often observe delays when using Nagle algorithm,
|
||||||
|
# so we disable that to maximize performance
|
||||||
|
setsockopt($socket, IPPROTO_TCP, TCP_NODELAY, 1);
|
||||||
|
|
||||||
|
$ENV{PVE_DAEMON_SOCKET_3128} = $socket->fileno;
|
||||||
|
}
|
||||||
|
|
||||||
|
# remove FD_CLOEXEC bit to reuse on exec
|
||||||
|
$socket->fcntl(Fcntl::F_SETFD(), 0);
|
||||||
|
|
||||||
$self->{server_config} = {
|
$self->{server_config} = {
|
||||||
base_handler_class => 'PVE::API2',
|
base_handler_class => 'PVE::API2',
|
||||||
|
Loading…
Reference in New Issue
Block a user