module OpenSSL::Buffering

def read(size=nil, buf=nil)

def read(size=nil, buf=nil)
  if size == 0
    if buf
      buf.clear
    else
      buf = ""
    end
    return @eof ? nil : buf
  end
  until @eof
    break if size && size <= @rbuffer.size
    fill_rbuff
  end
  ret = consume_rbuff(size) || ""
  if buf
    buf.replace(ret)
    ret = buf
  end
  (size && ret.empty?) ? nil : ret
end