Skip to content

Commit 6243638

Browse files
authored
Merge pull request #212 from rhenium/jm/buffering-reduce-memory-allocation
Reduce memory allocation when writing to SSLSocket
2 parents 7929b53 + 251b5be commit 6243638

File tree

1 file changed

+5
-12
lines changed

1 file changed

+5
-12
lines changed

lib/openssl/buffering.rb

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -316,20 +316,15 @@ def do_write(s)
316316
@wbuffer << s
317317
@wbuffer.force_encoding(Encoding::BINARY)
318318
@sync ||= false
319-
if @sync or @wbuffer.size > BLOCK_SIZE or idx = @wbuffer.rindex($/)
320-
remain = idx ? idx + $/.size : @wbuffer.length
321-
nwritten = 0
322-
while remain > 0
323-
str = @wbuffer[nwritten,remain]
319+
if @sync or @wbuffer.size > BLOCK_SIZE
320+
until @wbuffer.empty?
324321
begin
325-
nwrote = syswrite(str)
322+
nwrote = syswrite(@wbuffer)
326323
rescue Errno::EAGAIN
327324
retry
328325
end
329-
remain -= nwrote
330-
nwritten += nwrote
326+
@wbuffer[0, nwrote] = ""
331327
end
332-
@wbuffer[0,nwritten] = ""
333328
end
334329
end
335330

@@ -409,9 +404,7 @@ def puts(*args)
409404
end
410405
args.each{|arg|
411406
s << arg.to_s
412-
if $/ && /\n\z/ !~ s
413-
s << "\n"
414-
end
407+
s.sub!(/(?<!\n)\z/, "\n")
415408
}
416409
do_write(s)
417410
nil

0 commit comments

Comments
 (0)