details:   http://freenginx.org/hg/nginx-tests/rev/0b27b42aef05
branches:  
changeset: 2011:0b27b42aef05
user:      Maxim Dounin <[email protected]>
date:      Fri Jul 11 12:49:19 2025 +0300
description:
Tests: workaround for IO::Socket::SSL sysread() issue.

IO::Socket::SSL 2.091 to 2.094 fails to clear buffer in sysread() on EOF
(https://github.com/noxxi/p5-io-socket-ssl/issues/171), the issue is fixed
in IO::Socket::SSL 2.095.

As a as a workaround for the affected versions, we set the buffer explicitly
to an empty string if sysread() returns 0.

diffstat:

 lib/Test/Nginx/Stream.pm |  7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diffs (17 lines):

diff --git a/lib/Test/Nginx/Stream.pm b/lib/Test/Nginx/Stream.pm
--- a/lib/Test/Nginx/Stream.pm
+++ b/lib/Test/Nginx/Stream.pm
@@ -114,6 +114,13 @@ sub read {
        while (IO::Select->new($s)->can_read($extra{read_timeout} || 8)) {
                my $n = $s->sysread($buf, 1024);
                next if !defined $n && $!{EWOULDBLOCK};
+
+               # IO::Socket::SSL 2.091 to 2.094 fails to clear buffer on EOF
+               # (https://github.com/noxxi/p5-io-socket-ssl/issues/171);
+               # as a workaround, we set it explicitly to an empty string
+
+               $buf = '' if defined $n && $n == 0;
+
                last;
        }
 

Reply via email to