[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