http://qs321.pair.com?node_id=624494


in reply to Max 16384 bytes

Here an IO::Socket::SSL syswrite() snippet:
my $buffer = 'x' x 100000000; my $length = length($buffer); my $offset = 0; my $i = 0; my $client = $ipc->accept(); warn "connect from: ", $client->peerhost, "\n"; warn "print $length bytes to client\n"; while ($length) { my $written = syswrite($client, $buffer, $length, $offset); die "System write error: $!\n" unless defined $written; $length -= $written; $offset += $written; $i++; } warn "Iterations: $i\n";
Iterations: 6104
syswrite() writes only 16k to the socket and as I googled for a reason I saw code samples with
my $blksize = (stat($fh))[11] || 16384;
and though it could maybe a buffer limit or something else.

This limit only happends with IO::Socket::SSL but not with IO::Socket::INET so I was a bit confused.

Replies are listed 'Best First'.
Re^2: Max 16384 bytes
by shmem (Chancellor) on Jul 02, 2007 at 16:09 UTC
    On my box, from /usr/include/openssl/ssl3.h:
    /* Due to MS stuffing up, this can change.... */ #if defined(OPENSSL_SYS_WIN16) || \ (defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN32)) #define SSL3_RT_MAX_EXTRA (14000) #else #define SSL3_RT_MAX_EXTRA (16384) #endif

    That's why... ;-)

    --shmem

    _($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                                  /\_¯/(q    /
    ----------------------------  \__(m.====·.(_("always off the crowd"))."·
    ");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}
      Sure.... take all the mystery out of the magical number. I mean... who'd have thought to go from Perl to C code.

      Great detective work!

      (Still should have been documented in the Perl code, too. ;)

      *argh* maybe I had to take a look into it?

      thanks!