diff options
Diffstat (limited to 'src/tls_wrap.cc')
-rw-r--r-- | src/tls_wrap.cc | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/tls_wrap.cc b/src/tls_wrap.cc index 6ceb861be2..b7bce94706 100644 --- a/src/tls_wrap.cc +++ b/src/tls_wrap.cc @@ -263,12 +263,17 @@ void TLSCallbacks::EncOut() { return; } - char* data = NodeBIO::FromBIO(enc_out_)->Peek(&write_size_); - assert(write_size_ != 0); + char* data[kSimultaneousBufferCount]; + size_t size[ARRAY_SIZE(data)]; + size_t count = ARRAY_SIZE(data); + write_size_ = NodeBIO::FromBIO(enc_out_)->PeekMultiple(data, size, &count); + assert(write_size_ != 0 && count != 0); write_req_.data = this; - uv_buf_t buf = uv_buf_init(data, write_size_); - int r = uv_write(&write_req_, wrap()->stream(), &buf, 1, EncOutCb); + uv_buf_t buf[ARRAY_SIZE(data)]; + for (size_t i = 0; i < count; i++) + buf[i] = uv_buf_init(data[i], size[i]); + int r = uv_write(&write_req_, wrap()->stream(), buf, count, EncOutCb); // Ignore errors, this should be already handled in js if (!r) { |