[OpenSRF-GIT] OpenSRF branch master updated. 1f38166249e9f8fbb58ad21d1a00b935200a9278
Evergreen Git
git at git.evergreen-ils.org
Thu Sep 14 20:33:49 EDT 2017
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "OpenSRF".
The branch, master has been updated
via 1f38166249e9f8fbb58ad21d1a00b935200a9278 (commit)
from be2b2645f7da0907366eb0c99b5d6c231c366b30 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 1f38166249e9f8fbb58ad21d1a00b935200a9278
Author: Galen Charlton <gmc at equinoxinitiative.org>
Date: Thu Sep 14 17:36:40 2017 -0400
LP#1717350: fix chunking messages sent from Perl services
The chunk size adjustments introduced by the patches for bug 1709710
could result in calculating non-integral chunk sizes for Perl services.
This in turn led to fractional offsets and lengths being passed to
Perl's substr() function; rounding in turn can lead to characters
in the response getting silently dropped, which in turn broke
parsing the reconstituted response.
To test
-------
The problem can be reproduced by invoking
open-ils.storage open-ils.storage.actor.org_unit.descendants.atomic 1, 0
in Evergreen databases with org unit trees large enough that the
response gets chunked.
Signed-off-by: Galen Charlton <gmc at equinoxinitiative.org>
Signed-off-by: Jason Stephenson <jason at sigio.com>
diff --git a/src/perl/lib/OpenSRF/AppSession.pm b/src/perl/lib/OpenSRF/AppSession.pm
index f7b3edf..b90e52c 100644
--- a/src/perl/lib/OpenSRF/AppSession.pm
+++ b/src/perl/lib/OpenSRF/AppSession.pm
@@ -13,6 +13,7 @@ use Exporter;
use Encode;
use base qw/Exporter OpenSRF/;
use Time::HiRes qw( time usleep );
+use POSIX ();
use warnings;
use strict;
@@ -1067,7 +1068,7 @@ sub respond {
my $chunk_size = $self->max_chunk_size;
if ($escaped_length > $self->max_chunk_size) {
- $chunk_size = ($raw_length / $escaped_length) * $self->max_chunk_size;
+ $chunk_size = POSIX::floor(($raw_length / $escaped_length) * $self->max_chunk_size);
}
if ($raw_length > $chunk_size) { # send partials ("chunking")
-----------------------------------------------------------------------
Summary of changes:
src/perl/lib/OpenSRF/AppSession.pm | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
hooks/post-receive
--
OpenSRF
More information about the opensrf-commits
mailing list