You've already forked pgbackrest
mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2025-09-16 09:06:18 +02:00
Harden protocol handshake to handle race conditions.
This commit is contained in:
@@ -158,6 +158,16 @@
|
||||
</contributor-list>
|
||||
|
||||
<release-list>
|
||||
<release date="XXXX-XX-XX" version="1.20dev" title="UNDER DEVELOPMENT">
|
||||
<release-core-list>
|
||||
<release-refactor-list>
|
||||
<release-item>
|
||||
<p>Harden protocol handshake to handle race conditions.</p>
|
||||
</release-item>
|
||||
</release-refactor-list>
|
||||
</release-core-list>
|
||||
</release>
|
||||
|
||||
<release date="2017-06-12" version="1.19" title="S3 Support">
|
||||
<release-core-list>
|
||||
<release-bug-list>
|
||||
|
@@ -95,12 +95,22 @@ sub greetingRead
|
||||
# Get the first line of output from the remote if possible
|
||||
my $strGreeting = $self->io()->readLine(true);
|
||||
|
||||
# Check for errors
|
||||
$self->io()->error();
|
||||
# Parse the greeting and make sure it is valid
|
||||
my $hGreeting;
|
||||
|
||||
eval
|
||||
{
|
||||
$hGreeting = $self->{oJSON}->decode($strGreeting);
|
||||
|
||||
return true;
|
||||
}
|
||||
# Report any error that stopped parsing
|
||||
or do
|
||||
{
|
||||
$self->io()->error(ERROR_PROTOCOL, 'invalid protocol greeting', $strGreeting);
|
||||
};
|
||||
|
||||
# Error if greeting parameters do not match
|
||||
my $hGreeting = $self->{oJSON}->decode($strGreeting);
|
||||
|
||||
for my $hParam ({strName => 'name', strExpected => BACKREST_NAME},
|
||||
{strName => 'version', strExpected => BACKREST_VERSION},
|
||||
{strName => 'service', strExpected => $self->{strName}})
|
||||
|
@@ -35,7 +35,7 @@ use constant BACKREST_BIN => abs_path(
|
||||
# Defines the current version of the BackRest executable. The version number is used to track features but does not affect what
|
||||
# repositories or manifests can be read - that's the job of the format number.
|
||||
#-----------------------------------------------------------------------------------------------------------------------------------
|
||||
use constant BACKREST_VERSION => '1.19';
|
||||
use constant BACKREST_VERSION => '1.20dev';
|
||||
push @EXPORT, qw(BACKREST_VERSION);
|
||||
|
||||
# Format Format Number
|
||||
|
@@ -11,7 +11,7 @@ use AutoLoader;
|
||||
our @ISA = qw(Exporter);
|
||||
|
||||
# Library version (add .999 during development)
|
||||
our $VERSION = '1.19';
|
||||
our $VERSION = '1.20.999';
|
||||
|
||||
sub libCVersion {return $VERSION};
|
||||
|
||||
|
Reference in New Issue
Block a user