1
0
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:
David Steele
2017-06-15 15:12:28 -04:00
parent c10c5bb0ef
commit 6e29f616b3
4 changed files with 26 additions and 6 deletions

View File

@@ -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>

View File

@@ -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}})

View File

@@ -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

View File

@@ -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};