From fcfa0d639da338c470f07942da71f78fa65354a1 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 25 Jan 2020 20:57:57 +0000 Subject: switch to sysseek + sysread for serving static files The "perlio" layer doesn't do read(2) syscalls over 8192 bytes at the moment, and binmode($fh, ':unix') leaks[1]. So use sysseek and sysread for now, since I can't see retaining compatibility with PerlIO::scalar being worth the trouble. [1] http://nntp.perl.org/group/perl.perl5.porters/256918 --- lib/PublicInbox/DS.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/PublicInbox/DS.pm') diff --git a/lib/PublicInbox/DS.pm b/lib/PublicInbox/DS.pm index c76a5038..4d685131 100644 --- a/lib/PublicInbox/DS.pm +++ b/lib/PublicInbox/DS.pm @@ -395,10 +395,10 @@ sub close { sub send_tmpio ($$) { my ($sock, $tmpio) = @_; - seek($tmpio->[0], $tmpio->[1], SEEK_SET) or return; + sysseek($tmpio->[0], $tmpio->[1], SEEK_SET) or return; my $n = $tmpio->[2] // 65536; $n = 65536 if $n > 65536; - defined(my $to_write = read($tmpio->[0], my $buf, $n)) or return; + defined(my $to_write = sysread($tmpio->[0], my $buf, $n)) or return; my $written = 0; while ($to_write > 0) { if (defined(my $w = syswrite($sock, $buf, $to_write, $written))) { -- cgit v1.2.3-24-ge0c7