-
Notifications
You must be signed in to change notification settings - Fork 71
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #95 from AntelopeIO/fix_beast_ws_defect_main
[3.1 -> main] patch pinned build's boost 1.70 to fix websocket defect
- Loading branch information
Showing
2 changed files
with
92 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
diff -Naur a/boost/beast/websocket/impl/ping.hpp b/boost/beast/websocket/impl/ping.hpp | ||
--- a/boost/beast/websocket/impl/ping.hpp 2019-05-06 22:01:43.435117251 -0400 | ||
+++ b/boost/beast/websocket/impl/ping.hpp 2019-05-06 22:02:37.949433556 -0400 | ||
@@ -176,7 +176,8 @@ | ||
impl.op_idle_ping.emplace(std::move(*this)); | ||
impl.wr_block.lock(this); | ||
BOOST_ASIO_CORO_YIELD | ||
- net::post(this->get(), std::move(*this)); | ||
+ net::post( | ||
+ this->get_executor(), std::move(*this)); | ||
BOOST_ASSERT(impl.wr_block.is_locked(this)); | ||
} | ||
if(impl.check_stop_now(ec)) | ||
diff -Naur a/libs/beast/CHANGELOG.md b/libs/beast/CHANGELOG.md | ||
--- a/libs/beast/CHANGELOG.md 2019-05-06 22:02:54.332528615 -0400 | ||
+++ b/libs/beast/CHANGELOG.md 2019-05-06 22:03:05.896595711 -0400 | ||
@@ -1,3 +1,10 @@ | ||
+Version 248-hf1: | ||
+ | ||
+* Add idle ping suspend test | ||
+* Fix moved-from executor in idle ping timeout | ||
+ | ||
+-------------------------------------------------------------------------------- | ||
+ | ||
Version 248: | ||
|
||
* Don't use a moved-from handler | ||
diff -Naur a/libs/beast/test/beast/websocket/ping.cpp b/libs/beast/test/beast/websocket/ping.cpp | ||
--- a/libs/beast/test/beast/websocket/ping.cpp 2019-05-06 22:02:54.342528673 -0400 | ||
+++ b/libs/beast/test/beast/websocket/ping.cpp 2019-05-06 22:03:05.908595781 -0400 | ||
@@ -10,8 +10,11 @@ | ||
// Test that header file is self-contained. | ||
#include <boost/beast/websocket/stream.hpp> | ||
|
||
+#include <boost/beast/_experimental/test/tcp.hpp> | ||
+ | ||
#include "test.hpp" | ||
|
||
+#include <boost/asio/ip/tcp.hpp> | ||
#include <boost/asio/io_context.hpp> | ||
#include <boost/asio/strand.hpp> | ||
|
||
@@ -366,6 +369,46 @@ | ||
BEAST_EXPECT(count == 3); | ||
}); | ||
|
||
+ // suspend idle ping | ||
+ { | ||
+ using socket_type = | ||
+ net::basic_stream_socket< | ||
+ net::ip::tcp, | ||
+ net::executor>; | ||
+ net::io_context ioc; | ||
+ stream<socket_type> ws1(ioc); | ||
+ stream<socket_type> ws2(ioc); | ||
+ ws1.set_option(stream_base::timeout{ | ||
+ stream_base::none(), | ||
+ std::chrono::seconds(0), | ||
+ true}); | ||
+ test::connect( | ||
+ ws1.next_layer(), | ||
+ ws2.next_layer()); | ||
+ ws1.async_handshake("localhost", "/", | ||
+ [](error_code){}); | ||
+ ws2.async_accept([](error_code){}); | ||
+ ioc.run(); | ||
+ ioc.restart(); | ||
+ flat_buffer b1; | ||
+ auto mb = b1.prepare(65536); | ||
+ std::memset(mb.data(), 0, mb.size()); | ||
+ b1.commit(65536); | ||
+ ws1.async_write(b1.data(), | ||
+ [&](error_code, std::size_t){}); | ||
+ BEAST_EXPECT( | ||
+ ws1.impl_->wr_block.is_locked()); | ||
+ ws1.async_read_some(net::mutable_buffer{}, | ||
+ [&](error_code, std::size_t){}); | ||
+ ioc.run(); | ||
+ ioc.restart(); | ||
+ flat_buffer b2; | ||
+ ws2.async_read(b2, | ||
+ [&](error_code, std::size_t){}); | ||
+ ioc.run(); | ||
+ } | ||
+ //); | ||
+ | ||
{ | ||
echo_server es{log, kind::async}; | ||
net::io_context ioc; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters