Qualify buffer_copy, don't qualify buffer_size:

fix #1416

* Calls to buffer_copy are qualified as net::buffer_copy
* Calls to buffer_size are made unqualified, permitting
  argument dependent lookup to take effect.
This commit is contained in:
Vinnie Falco committed 2019-02-02 13:01:27 -08:00
1 parent 5b0b218d96
commit a142969c5d
34 files changed
+162 -161

No files matched your search

@@ -121,15 +121,14 @@ public:
template<class Buffers>
void run(Buffers const& buffers)
{
using net::buffer_copy;
using net::buffer_size;
error_code ec;
using net::buffer_size;
auto const mb = beast::detail::dynamic_buffer_prepare(
ws_.impl_->rd_buf, buffer_size(buffers), ec,
error::buffer_overflow);
if(ec)
return (*this)(ec);
ws_.impl_->rd_buf.commit(buffer_copy(*mb, buffers));
ws_.impl_->rd_buf.commit(net::buffer_copy(*mb, buffers));
(*this)(ec);
}
@@ -296,15 +295,14 @@ accept(
static_assert(net::is_const_buffer_sequence<
ConstBufferSequence>::value,
"ConstBufferSequence requirements not met");
using net::buffer_copy;
using net::buffer_size;
impl_->reset();
using net::buffer_size;
auto const mb = beast::detail::dynamic_buffer_prepare(
impl_->rd_buf, buffer_size(buffers), ec,
error::buffer_overflow);
if(ec)
return;
impl_->rd_buf.commit(buffer_copy(*mb, buffers));
impl_->rd_buf.commit(net::buffer_copy(*mb, buffers));
do_accept(&default_decorate_res, ec);
}
@@ -328,15 +326,14 @@ accept_ex(
static_assert(net::is_const_buffer_sequence<
ConstBufferSequence>::value,
"ConstBufferSequence requirements not met");
using net::buffer_copy;
using net::buffer_size;
impl_->reset();
using net::buffer_size;
auto const mb = beast::detail::dynamic_buffer_prepare(
impl_->rd_buf, buffer_size(buffers), ec,
error::buffer_overflow);
if(ec)
return;
impl_->rd_buf.commit(buffer_copy(*mb, buffers));
impl_->rd_buf.commit(net::buffer_copy(*mb, buffers));
do_accept(decorator, ec);
}
@@ -12,7 +12,6 @@
#include <boost/beast/core/async_op_base.hpp>
#include <boost/beast/core/bind_handler.hpp>
#include <boost/beast/core/handler_ptr.hpp>
#include <boost/beast/core/type_traits.hpp>
#include <boost/beast/core/detail/get_executor_type.hpp>
#include <boost/beast/websocket/detail/frame.hpp>
@@ -282,8 +282,6 @@ parse_fh(
DynamicBuffer& b,
error_code& ec)
{
using net::buffer;
using net::buffer_copy;
using net::buffer_size;
if(buffer_size(b.data()) < 2)
{
@@ -297,7 +295,8 @@ parse_fh(
std::size_t need;
{
std::uint8_t tmp[2];
cb.consume(buffer_copy(buffer(tmp), cb));
cb.consume(net::buffer_copy(
net::buffer(tmp), cb));
fh.len = tmp[1] & 0x7f;
switch(fh.len)
{
@@ -408,7 +407,7 @@ parse_fh(
{
std::uint8_t tmp[2];
BOOST_ASSERT(buffer_size(cb) >= sizeof(tmp));
cb.consume(buffer_copy(buffer(tmp), cb));
cb.consume(net::buffer_copy(net::buffer(tmp), cb));
fh.len = detail::big_uint16_to_native(&tmp[0]);
if(fh.len < 126)
{
@@ -422,7 +421,7 @@ parse_fh(
{
std::uint8_t tmp[8];
BOOST_ASSERT(buffer_size(cb) >= sizeof(tmp));
cb.consume(buffer_copy(buffer(tmp), cb));
cb.consume(net::buffer_copy(net::buffer(tmp), cb));
fh.len = detail::big_uint64_to_native(&tmp[0]);
if(fh.len < 65536)
{
@@ -437,7 +436,7 @@ parse_fh(
{
std::uint8_t tmp[4];
BOOST_ASSERT(buffer_size(cb) >= sizeof(tmp));
cb.consume(buffer_copy(buffer(tmp), cb));
cb.consume(net::buffer_copy(net::buffer(tmp), cb));
fh.key = detail::little_uint32_to_native(&tmp[0]);
detail::prepare_key(impl_->rd_key, fh.key);
}
@@ -456,7 +455,7 @@ parse_fh(
else
{
if(impl_->rd_size > (std::numeric_limits<
std::uint64_t>::max)() - fh.len)
std::uint64_t>::max)() - fh.len)
{
// message size exceeds configured limit
ec = error::message_too_big;
+26 -25
View File
@@ -88,10 +88,7 @@ operator()(
bool cont)
{
using beast::detail::clamp;
using net::buffer;
using net::buffer_copy;
using net::buffer_size;
using net::mutable_buffer;
enum
{
do_nomask_nofrag,
@@ -266,9 +263,9 @@ operator()(
detail::write<flat_static_buffer_base>(
ws_.impl_->wr_fb, fh_);
n = clamp(remain_, ws_.impl_->wr_buf_size);
buffer_copy(buffer(
net::buffer_copy(net::buffer(
ws_.impl_->wr_buf.get(), n), cb_);
detail::mask_inplace(buffer(
detail::mask_inplace(net::buffer(
ws_.impl_->wr_buf.get(), n), key_);
remain_ -= n;
ws_.impl_->wr_cont = ! fin_;
@@ -276,7 +273,7 @@ operator()(
BOOST_ASIO_CORO_YIELD
net::async_write(
ws_.impl_->stream, buffers_cat(ws_.impl_->wr_fb.data(),
buffer(ws_.impl_->wr_buf.get(), n)),
net::buffer(ws_.impl_->wr_buf.get(), n)),
std::move(*this));
if(! ws_.impl_->check_ok(ec))
goto upcall;
@@ -286,15 +283,15 @@ operator()(
{
cb_.consume(ws_.impl_->wr_buf_size);
n = clamp(remain_, ws_.impl_->wr_buf_size);
buffer_copy(buffer(
net::buffer_copy(net::buffer(
ws_.impl_->wr_buf.get(), n), cb_);
detail::mask_inplace(buffer(
detail::mask_inplace(net::buffer(
ws_.impl_->wr_buf.get(), n), key_);
remain_ -= n;
// Send partial payload
BOOST_ASIO_CORO_YIELD
net::async_write(ws_.impl_->stream,
buffer(ws_.impl_->wr_buf.get(), n),
net::buffer(ws_.impl_->wr_buf.get(), n),
std::move(*this));
if(! ws_.impl_->check_ok(ec))
goto upcall;
@@ -315,9 +312,9 @@ operator()(
fh_.key = ws_.create_mask();
fh_.fin = fin_ ? remain_ == 0 : false;
detail::prepare_key(key_, fh_.key);
buffer_copy(buffer(
net::buffer_copy(net::buffer(
ws_.impl_->wr_buf.get(), n), cb_);
detail::mask_inplace(buffer(
detail::mask_inplace(net::buffer(
ws_.impl_->wr_buf.get(), n), key_);
ws_.impl_->wr_fb.clear();
detail::write<flat_static_buffer_base>(
@@ -327,7 +324,7 @@ operator()(
BOOST_ASIO_CORO_YIELD
net::async_write(ws_.impl_->stream,
buffers_cat(ws_.impl_->wr_fb.data(),
buffer(ws_.impl_->wr_buf.get(), n)),
net::buffer(ws_.impl_->wr_buf.get(), n)),
std::move(*this));
if(! ws_.impl_->check_ok(ec))
goto upcall;
@@ -358,7 +355,7 @@ operator()(
{
for(;;)
{
b = buffer(ws_.impl_->wr_buf.get(),
b = net::buffer(ws_.impl_->wr_buf.get(),
ws_.impl_->wr_buf_size);
more_ = ws_.impl_->deflate(b, cb_, fin_, in_, ec);
if(! ws_.impl_->check_ok(ec))
@@ -473,8 +470,6 @@ write_some(bool fin,
ConstBufferSequence>::value,
"ConstBufferSequence requirements not met");
using beast::detail::clamp;
using net::buffer;
using net::buffer_copy;
using net::buffer_size;
std::size_t bytes_transferred = 0;
ec = {};
@@ -503,7 +498,7 @@ write_some(bool fin,
ConstBufferSequence> cb{buffers};
for(;;)
{
auto b = buffer(
auto b = net::buffer(
impl_->wr_buf.get(), impl_->wr_buf_size);
auto const more = impl_->deflate(
b, cb, fin, bytes_transferred, ec);
@@ -605,9 +600,11 @@ write_some(bool fin,
buffers_suffix<
ConstBufferSequence> cb{buffers};
{
auto const n = clamp(remain, impl_->wr_buf_size);
auto const b = buffer(impl_->wr_buf.get(), n);
buffer_copy(b, cb);
auto const n =
clamp(remain, impl_->wr_buf_size);
auto const b =
net::buffer(impl_->wr_buf.get(), n);
net::buffer_copy(b, cb);
cb.consume(n);
remain -= n;
detail::mask_inplace(b, key);
@@ -620,9 +617,11 @@ write_some(bool fin,
}
while(remain > 0)
{
auto const n = clamp(remain, impl_->wr_buf_size);
auto const b = buffer(impl_->wr_buf.get(), n);
buffer_copy(b, cb);
auto const n =
clamp(remain, impl_->wr_buf_size);
auto const b =
net::buffer(impl_->wr_buf.get(), n);
net::buffer_copy(b, cb);
cb.consume(n);
remain -= n;
detail::mask_inplace(b, key);
@@ -643,9 +642,11 @@ write_some(bool fin,
fh.key = this->create_mask();
detail::prepared_key key;
detail::prepare_key(key, fh.key);
auto const n = clamp(remain, impl_->wr_buf_size);
auto const b = buffer(impl_->wr_buf.get(), n);
buffer_copy(b, cb);
auto const n =
clamp(remain, impl_->wr_buf_size);
auto const b =
net::buffer(impl_->wr_buf.get(), n);
net::buffer_copy(b, cb);
detail::mask_inplace(b, key);
fh.len = n;
remain -= n;