[arch-commits] Commit in wt/repos/community-x86_64 (4 files)
Sven-Hendrik Haase
svenstaro at archlinux.org
Sun May 20 21:42:20 UTC 2018
Date: Sunday, May 20, 2018 @ 21:42:19
Author: svenstaro
Revision: 325660
archrelease: copy trunk to community-x86_64
Added:
wt/repos/community-x86_64/960e8d017b264710e344c63f9feb6ea1fa593eeb.patch
(from rev 325659, wt/trunk/960e8d017b264710e344c63f9feb6ea1fa593eeb.patch)
wt/repos/community-x86_64/PKGBUILD
(from rev 325659, wt/trunk/PKGBUILD)
Deleted:
wt/repos/community-x86_64/960e8d017b264710e344c63f9feb6ea1fa593eeb.patch
wt/repos/community-x86_64/PKGBUILD
------------------------------------------------+
960e8d017b264710e344c63f9feb6ea1fa593eeb.patch | 1276 +++++++++++------------
PKGBUILD | 108 -
2 files changed, 688 insertions(+), 696 deletions(-)
Deleted: 960e8d017b264710e344c63f9feb6ea1fa593eeb.patch
===================================================================
--- 960e8d017b264710e344c63f9feb6ea1fa593eeb.patch 2018-05-20 21:42:11 UTC (rev 325659)
+++ 960e8d017b264710e344c63f9feb6ea1fa593eeb.patch 2018-05-20 21:42:19 UTC (rev 325660)
@@ -1,638 +0,0 @@
-From 960e8d017b264710e344c63f9feb6ea1fa593eeb Mon Sep 17 00:00:00 2001
-From: Roel Standaert <roel at emweb.be>
-Date: Tue, 19 Dec 2017 17:33:41 +0100
-Subject: [PATCH] Several changes:
-
- - Compatibility with Boost 1.66 (asio changes)
- - WDialog: Document that autofocus is enabled by default, and don't change focus if it was set explicitly
- - Fix findById
- - WWebWidget: Avoid copy of children vector
- - Json: Document headers to include for Wt::Json::parse() and Wt::Json::serialize()
- - <num-threads> does not exist anymore as a child of <connector-fcgi> or <connector-isapi>
----
- examples/filetreetable/CMakeLists.txt | 1 +
- examples/gitmodel/CMakeLists.txt | 2 +-
- examples/wt-homepage/CMakeLists.txt | 2 +-
- src/Wt/AsioWrapper/strand.hpp | 19 +++++++++++++++++
- src/Wt/Http/Client.C | 8 ++++++-
- src/Wt/Http/Client.h | 5 +++++
- src/Wt/Json/Value.h | 5 ++++-
- src/Wt/WDialog.C | 6 ++++--
- src/Wt/WDialog.h | 3 +++
- src/Wt/WWebWidget.C | 12 ++++++++---
- src/http/Connection.C | 39 +++++++++++++++++++++--------------
- src/http/Connection.h | 8 +++++--
- src/http/Reply.C | 3 ++-
- src/http/Server.C | 4 ++++
- src/http/Server.h | 2 +-
- src/http/SessionProcess.C | 5 +++++
- src/http/SslConnection.C | 16 +++++++-------
- src/http/TcpConnection.C | 18 ++++++++--------
- src/web/Configuration.C | 4 ----
- 19 files changed, 113 insertions(+), 49 deletions(-)
-
-diff --git a/examples/filetreetable/CMakeLists.txt b/examples/filetreetable/CMakeLists.txt
-index 4265b9b7..c0c94100 100644
---- a/examples/filetreetable/CMakeLists.txt
-+++ b/examples/filetreetable/CMakeLists.txt
-@@ -10,6 +10,7 @@ ELSE(NOT BOOST_FS_LIB)
-
- TARGET_LINK_LIBRARIES(filetreetable.wt
- ${BOOST_FS_LIB}
-+ ${BOOST_SYSTEM_LIB}
- )
-
- INCLUDE_DIRECTORIES(${WT_SOURCE_DIR}/src)
-diff --git a/examples/gitmodel/CMakeLists.txt b/examples/gitmodel/CMakeLists.txt
-index 9b124c98..ed557d1f 100644
---- a/examples/gitmodel/CMakeLists.txt
-+++ b/examples/gitmodel/CMakeLists.txt
-@@ -7,7 +7,7 @@ IF(BOOST_FS_LIB)
- ../wt-homepage/SourceView.C
- GitView.C
- )
-- TARGET_LINK_LIBRARIES(gitview.wt ${BOOST_FS_LIB})
-+ TARGET_LINK_LIBRARIES(gitview.wt ${BOOST_FS_LIB} ${BOOST_SYSTEM_LIB})
-
- INCLUDE_DIRECTORIES(
- ${WT_SOURCE_DIR}/src
-diff --git a/examples/wt-homepage/CMakeLists.txt b/examples/wt-homepage/CMakeLists.txt
-index b60e7c5f..513bc570 100644
---- a/examples/wt-homepage/CMakeLists.txt
-+++ b/examples/wt-homepage/CMakeLists.txt
-@@ -34,7 +34,7 @@ ENDIF(WT_EMWEB_BUILD)
-
- WT_ADD_EXAMPLE(Home.wt ${SRC})
-
--TARGET_LINK_LIBRARIES(Home.wt ${EXAMPLES_DBO_LIBS} ${BOOST_FS_LIB})
-+TARGET_LINK_LIBRARIES(Home.wt ${EXAMPLES_DBO_LIBS} ${BOOST_FS_LIB} ${BOOST_SYSTEM_LIB})
-
- # Test whether crypt(3) is provided by libc. If it's not, check if
- # libcrypt exists and if it provides crypt(3).
-diff --git a/src/Wt/AsioWrapper/strand.hpp b/src/Wt/AsioWrapper/strand.hpp
-index 0c3a201f..9ddd8d1b 100644
---- a/src/Wt/AsioWrapper/strand.hpp
-+++ b/src/Wt/AsioWrapper/strand.hpp
-@@ -12,10 +12,29 @@
- #ifdef WT_ASIO_IS_BOOST_ASIO
-
- #include <boost/asio/strand.hpp>
-+namespace Wt {
-+ namespace AsioWrapper {
-+#if BOOST_VERSION >= 106600
-+ using strand = boost::asio::io_context::strand;
-+#else
-+ using strand = boost::asio::strand;
-+#endif
-+ }
-+}
-
- #else // WT_ASIO_IS_STANDALONE_ASIO
-
-+#include <asio/version.hpp>
- #include <asio/strand.hpp>
-+namespace Wt {
-+ namespace AsioWrapper {
-+#if ASIO_VERSION >= 101100
-+ using strand = asio::io_service::strand;
-+#else
-+ using strand = asio::strand;
-+#endif
-+ }
-+}
-
- #endif // WT_ASIO_IS_BOOST_ASIO
-
-diff --git a/src/Wt/Http/Client.C b/src/Wt/Http/Client.C
-index 85230d10..6bb21a95 100644
---- a/src/Wt/Http/Client.C
-+++ b/src/Wt/Http/Client.C
-@@ -642,7 +642,7 @@ private:
-
- protected:
- asio::io_service& ioService_;
-- asio::strand strand_;
-+ AsioWrapper::strand strand_;
- tcp::resolver resolver_;
- asio::streambuf requestBuf_;
- asio::streambuf responseBuf_;
-@@ -929,8 +929,14 @@ bool Client::request(Http::Method method, const std::string& url,
-
- #ifdef WT_WITH_SSL
- } else if (parsedUrl.protocol == "https") {
-+#if defined(WT_ASIO_IS_BOOST_ASIO) && BOOST_VERSION >= 106600
-+ asio::ssl::context context(asio::ssl::context::tls);
-+#elif defined(WT_ASIO_IS_STANDALONE_ASIO) && ASIO_VERSION >= 101100
-+ asio::ssl::context context(asio::ssl::context::sslv23);
-+#else
- asio::ssl::context context
- (*ioService, asio::ssl::context::sslv23);
-+#endif
- long sslOptions = asio::ssl::context::no_sslv2 | asio::ssl::context::no_sslv3;
- context.set_options(sslOptions);
-
-diff --git a/src/Wt/Http/Client.h b/src/Wt/Http/Client.h
-index f3c7169a..77946867 100644
---- a/src/Wt/Http/Client.h
-+++ b/src/Wt/Http/Client.h
-@@ -23,7 +23,12 @@
- #ifdef WT_ASIO_IS_BOOST_ASIO
- namespace boost {
- namespace asio {
-+#if BOOST_VERSION >= 106600
-+ class io_context;
-+ typedef io_context io_service;
-+#else
- class io_service;
-+#endif
- }
- }
- #else // WT_ASIO_IS_STANDALONE_ASIO
-diff --git a/src/Wt/Json/Value.h b/src/Wt/Json/Value.h
-index 948277fa..0b0bc0d7 100644
---- a/src/Wt/Json/Value.h
-+++ b/src/Wt/Json/Value.h
-@@ -23,7 +23,7 @@ class Array;
- * \brief A JSON representation and parsing library.
- *
- * The JSON library contains data types to represent a JSON data
-- * structure (Value, Object and Array), and a JSON parser.
-+ * structure (Value, Object and Array), a JSON parser, and a JSON serializer.
- *
- * Usage example:
- * \code
-@@ -39,6 +39,9 @@ class Array;
- * bool b = result.get("b");
- * std::cerr << "a: " << s << ", b: " << b << std::endl; // a: That's great, b: true
- * \endcode
-+ *
-+ * Include the <Wt/Json/Parser.h> header for Wt::Json::parse(), and
-+ * the <Wt/Json/Serializer.h> header for Wt::Json::serialize().
- */
-
- /*! \brief Enumeration for the type of a JSON value.
-diff --git a/src/Wt/WDialog.C b/src/Wt/WDialog.C
-index 65ba51d7..31bd88b0 100644
---- a/src/Wt/WDialog.C
-+++ b/src/Wt/WDialog.C
-@@ -436,8 +436,10 @@ void WDialog::render(WFlags<RenderFlag> flags)
- if (!isModal())
- impl_->mouseWentDown().connect(this, &WDialog::bringToFront);
-
-- if ( flags.test(RenderFlag::Full) && autoFocus_)
-- impl_->setFirstFocus();
-+ if ( flags.test(RenderFlag::Full) && autoFocus_) {
-+ if (!impl_->findById(Wt::WApplication::instance()->focus()))
-+ impl_->setFirstFocus();
-+ }
-
- WPopupWidget::render(flags);
- }
-diff --git a/src/Wt/WDialog.h b/src/Wt/WDialog.h
-index 810d6945..967087c8 100644
---- a/src/Wt/WDialog.h
-+++ b/src/Wt/WDialog.h
-@@ -337,6 +337,9 @@ class WT_API WDialog : public WPopupWidget
- bool closable() const { return closeIcon_ != nullptr; }
-
- /*! \brief Set focus on the first widget in the dialog.
-+ *
-+ * Autofocus is enabled by default. If a widget inside of
-+ * this dialog already has focus, the focus will not be changed.
- */
- void setAutoFocus(bool enable){ autoFocus_ = enable;}
-
-diff --git a/src/Wt/WWebWidget.C b/src/Wt/WWebWidget.C
-index 42fc00fd..5835244f 100644
---- a/src/Wt/WWebWidget.C
-+++ b/src/Wt/WWebWidget.C
-@@ -1983,9 +1983,13 @@ bool WWebWidget::setFirstFocus()
- return true;
- }
-
-- for (unsigned i = 0; i < children().size(); i++)
-- if (children()[i]->setFirstFocus())
-- return true;
-+ bool result = false;
-+ iterateChildren([&result](Wt::WWidget *w){
-+ if (!result)
-+ result = w->setFirstFocus();
-+ });
-+ if (result)
-+ return true;
-
- return false;
- } else
-@@ -2207,6 +2211,8 @@ WWidget *WWebWidget::findById(const std::string& id)
- if (!result)
- result = c->findById(id);
- });
-+ if (result)
-+ return result;
- }
-
- return nullptr;
-diff --git a/src/http/Connection.C b/src/http/Connection.C
-index cab77089..27380a8a 100644
---- a/src/http/Connection.C
-+++ b/src/http/Connection.C
-@@ -61,6 +61,15 @@ Connection::~Connection()
- LOG_DEBUG("~Connection");
- }
-
-+asio::ip::tcp::socket::native_handle_type Connection::native()
-+{
-+#if (defined(WT_ASIO_IS_BOOST_ASIO) && BOOST_VERSION >= 106600) || (defined(WT_ASIO_IS_STANDALONE_ASIO) && ASIO_VERSION >= 101100)
-+ return socket().native_handle();
-+#else
-+ return socket().native();
-+#endif
-+}
-+
- void Connection::finishReply()
- {
- if (!request_.uri.empty()) {
-@@ -78,7 +87,7 @@ void Connection::scheduleStop()
-
- void Connection::start()
- {
-- LOG_DEBUG(socket().native() << ": start()");
-+ LOG_DEBUG(native() << ": start()");
-
- request_parser_.reset();
- request_.reset();
-@@ -106,7 +115,7 @@ void Connection::stop()
- void Connection::setReadTimeout(int seconds)
- {
- if (seconds != 0) {
-- LOG_DEBUG(socket().native() << " setting read timeout (ws: "
-+ LOG_DEBUG(native() << " setting read timeout (ws: "
- << request_.webSocketVersion << ")");
- state_ |= Reading;
-
-@@ -118,7 +127,7 @@ void Connection::setReadTimeout(int seconds)
-
- void Connection::setWriteTimeout(int seconds)
- {
-- LOG_DEBUG(socket().native() << " setting write timeout (ws: "
-+ LOG_DEBUG(native() << " setting write timeout (ws: "
- << request_.webSocketVersion << ")");
- state_ |= Writing;
-
-@@ -129,7 +138,7 @@ void Connection::setWriteTimeout(int seconds)
-
- void Connection::cancelReadTimer()
- {
-- LOG_DEBUG(socket().native() << " cancel read timeout");
-+ LOG_DEBUG(native() << " cancel read timeout");
- state_.clear(Reading);
-
- readTimer_.cancel();
-@@ -137,7 +146,7 @@ void Connection::cancelReadTimer()
-
- void Connection::cancelWriteTimer()
- {
-- LOG_DEBUG(socket().native() << " cancel write timeout");
-+ LOG_DEBUG(native() << " cancel write timeout");
- state_.clear(Writing);
-
- writeTimer_.cancel();
-@@ -163,7 +172,7 @@ void Connection::handleReadRequest0()
-
- #ifdef DEBUG
- try {
-- LOG_DEBUG(socket().native() << "incoming request: "
-+ LOG_DEBUG(socket().native_handle() << "incoming request: "
- << socket().remote_endpoint().port() << " (avail= "
- << (rcv_buffer_size_ - (rcv_remaining_ - buffer.data())) << "): "
- << std::string(rcv_remaining_,
-@@ -189,7 +198,7 @@ void Connection::handleReadRequest0()
- if (doWebSockets)
- request_.enableWebSocket();
-
-- LOG_DEBUG(socket().native() << "request: " << status);
-+ LOG_DEBUG(native() << "request: " << status);
-
- if (status >= 300)
- sendStockReply(status);
-@@ -242,7 +251,7 @@ void Connection::sendStockReply(StockReply::status_type status)
- void Connection::handleReadRequest(const Wt::AsioWrapper::error_code& e,
- std::size_t bytes_transferred)
- {
-- LOG_DEBUG(socket().native() << ": handleReadRequest(): " << e.message());
-+ LOG_DEBUG(native() << ": handleReadRequest(): " << e.message());
-
- cancelReadTimer();
-
-@@ -261,7 +270,7 @@ void Connection::close()
- cancelReadTimer();
- cancelWriteTimer();
-
-- LOG_DEBUG(socket().native() << ": close()");
-+ LOG_DEBUG(native() << ": close()");
-
- ConnectionManager_.stop(shared_from_this());
- }
-@@ -274,7 +283,7 @@ bool Connection::closed() const
-
- void Connection::handleError(const Wt::AsioWrapper::error_code& e)
- {
-- LOG_DEBUG(socket().native() << ": error: " << e.message());
-+ LOG_DEBUG(native() << ": error: " << e.message());
-
- close();
- }
-@@ -349,7 +358,7 @@ void Connection::handleReadBody0(ReplyPtr reply,
- const Wt::AsioWrapper::error_code& e,
- std::size_t bytes_transferred)
- {
-- LOG_DEBUG(socket().native() << ": handleReadBody0(): " << e.message());
-+ LOG_DEBUG(native() << ": handleReadBody0(): " << e.message());
-
- if (disconnectCallback_) {
- if (e && e != asio::error::operation_aborted) {
-@@ -357,7 +366,7 @@ void Connection::handleReadBody0(ReplyPtr reply,
- disconnectCallback_ = boost::function<void()>();
- f();
- } else if (!e) {
-- LOG_ERROR(socket().native()
-+ LOG_ERROR(native()
- << ": handleReadBody(): while waiting for disconnect, "
- "received unexpected data, closing");
- close();
-@@ -410,7 +419,7 @@ void Connection::startWriteResponse(ReplyPtr reply)
- }
- #endif
-
-- LOG_DEBUG(socket().native() << " sending: " << s << "(buffers: "
-+ LOG_DEBUG(native() << " sending: " << s << "(buffers: "
- << buffers.size() << ")");
-
- if (!buffers.empty()) {
-@@ -423,7 +432,7 @@ void Connection::startWriteResponse(ReplyPtr reply)
-
- void Connection::handleWriteResponse(ReplyPtr reply)
- {
-- LOG_DEBUG(socket().native() << ": handleWriteResponse() " <<
-+ LOG_DEBUG(native() << ": handleWriteResponse() " <<
- haveResponse_ << " " << responseDone_);
- if (haveResponse_)
- startWriteResponse(reply);
-@@ -458,7 +467,7 @@ void Connection::handleWriteResponse0(ReplyPtr reply,
- const Wt::AsioWrapper::error_code& e,
- std::size_t bytes_transferred)
- {
-- LOG_DEBUG(socket().native() << ": handleWriteResponse0(): "
-+ LOG_DEBUG(native() << ": handleWriteResponse0(): "
- << bytes_transferred << " ; " << e.message());
-
- cancelWriteTimer();
-diff --git a/src/http/Connection.h b/src/http/Connection.h
-index b0b71a36..f925177c 100644
---- a/src/http/Connection.h
-+++ b/src/http/Connection.h
-@@ -18,6 +18,7 @@
- #define HTTP_CONNECTION_HPP
-
- #include <Wt/AsioWrapper/asio.hpp>
-+#include <Wt/AsioWrapper/strand.hpp>
- #include <Wt/AsioWrapper/steady_timer.hpp>
-
- #include "Buffer.h"
-@@ -61,7 +62,7 @@ class Connection : public std::enable_shared_from_this<Connection>
- virtual ~Connection();
-
- Server *server() const { return server_; }
-- asio::strand& strand() { return strand_; }
-+ Wt::AsioWrapper::strand& strand() { return strand_; }
-
- /// Stop all asynchronous operations associated with the connection.
- void scheduleStop();
-@@ -86,6 +87,9 @@ class Connection : public std::enable_shared_from_this<Connection>
- const std::function<void()>& callback);
-
- protected:
-+ /// Get the native handle of the socket
-+ asio::ip::tcp::socket::native_handle_type native();
-+
- void handleWriteResponse0(ReplyPtr reply,
- const Wt::AsioWrapper::error_code& e,
- std::size_t bytes_transferred);
-@@ -104,7 +108,7 @@ class Connection : public std::enable_shared_from_this<Connection>
- /// The manager for this connection.
- ConnectionManager& ConnectionManager_;
-
-- asio::strand strand_;
-+ Wt::AsioWrapper::strand strand_;
-
- void finishReply();
-
-diff --git a/src/http/Reply.C b/src/http/Reply.C
-index 0d79e39f..b55ece21 100644
---- a/src/http/Reply.C
-+++ b/src/http/Reply.C
-@@ -596,7 +596,8 @@ bool Reply::encodeNextContentBuffer(
- originalSize += bs;
-
- gzipStrm_.avail_in = bs;
-- gzipStrm_.next_in = (unsigned char *)asio::detail::buffer_cast_helper(b);
-+ gzipStrm_.next_in = const_cast<unsigned char*>(
-+ asio::buffer_cast<const unsigned char*>(b));
-
- unsigned char out[16*1024];
- do {
-diff --git a/src/http/Server.C b/src/http/Server.C
-index fc69be21..ad16591f 100644
---- a/src/http/Server.C
-+++ b/src/http/Server.C
-@@ -116,7 +116,11 @@ Server::Server(const Configuration& config, Wt::WServer& wtServer)
- accept_strand_(wt_.ioService()),
- // post_strand_(ioService_),
- #ifdef HTTP_WITH_SSL
-+#if (defined(WT_ASIO_IS_BOOST_ASIO) && BOOST_VERSION >= 106600) || (defined(WT_ASIO_IS_STANDALONE_ASIO) && ASIO_VERSION >= 101100)
-+ ssl_context_(asio::ssl::context::sslv23),
-+#else
- ssl_context_(wt_.ioService(), asio::ssl::context::sslv23),
-+#endif
- #endif // HTTP_WITH_SSL
- connection_manager_(),
- sessionManager_(0),
-diff --git a/src/http/Server.h b/src/http/Server.h
-index 3d3229ac..97387b11 100644
---- a/src/http/Server.h
-+++ b/src/http/Server.h
-@@ -129,7 +129,7 @@ class Server
- Wt::WLogger accessLogger_;
-
- /// The strand for handleTcpAccept(), handleSslAccept() and handleStop()
-- asio::strand accept_strand_;
-+ Wt::AsioWrapper::strand accept_strand_;
-
- /// Acceptors used to listen for incoming http connections.
- std::vector<TcpListener> tcp_listeners_;
-diff --git a/src/http/SessionProcess.C b/src/http/SessionProcess.C
-index 72d9a881..fb057f2f 100644
---- a/src/http/SessionProcess.C
-+++ b/src/http/SessionProcess.C
-@@ -16,6 +16,7 @@
- #include <signal.h>
- #endif // WT_WIN32
-
-+#include "Wt/WConfig.h"
- #include "Wt/WLogger.h"
-
- namespace Wt {
-@@ -80,7 +81,11 @@ void SessionProcess::asyncExec(const Configuration &config,
- if (!ec)
- acceptor_->listen(0, ec);
- #ifndef WT_WIN32
-+#if (defined(WT_ASIO_IS_BOOST_ASIO) && BOOST_VERSION >= 106600) || (defined(WT_ASIO_IS_STANDALONE_ASIO) && ASIO_VERSION >= 101100)
-+ fcntl(acceptor_->native_handle(), F_SETFD, FD_CLOEXEC);
-+#else
- fcntl(acceptor_->native(), F_SETFD, FD_CLOEXEC);
-+#endif
- #endif // !WT_WIN32
- if (ec) {
- LOG_ERROR("Couldn't create listening socket: " << ec.message());
-diff --git a/src/http/SslConnection.C b/src/http/SslConnection.C
-index 74c8642a..12eb7465 100644
---- a/src/http/SslConnection.C
-+++ b/src/http/SslConnection.C
-@@ -81,9 +81,9 @@ void SslConnection::handleHandshake(const Wt::AsioWrapper::error_code& error)
-
- void SslConnection::stop()
- {
-- LOG_DEBUG(socket().native() << ": stop()");
-+ LOG_DEBUG(native() << ": stop()");
- finishReply();
-- LOG_DEBUG(socket().native() << ": SSL shutdown");
-+ LOG_DEBUG(native() << ": SSL shutdown");
-
- Connection::stop();
-
-@@ -108,20 +108,20 @@ void SslConnection::stopNextLayer(const Wt::AsioWrapper::error_code& ec)
- // In case of timeout, we will get here twice.
- sslShutdownTimer_.cancel();
- if (ec) {
-- LOG_DEBUG(socket().native() << ": ssl_shutdown failed:"
-+ LOG_DEBUG(native() << ": ssl_shutdown failed:"
- << ec.message());
- }
- try {
- if (socket().is_open()) {
- Wt::AsioWrapper::error_code ignored_ec;
-- LOG_DEBUG(socket().native() << ": socket shutdown");
-+ LOG_DEBUG(native() << ": socket shutdown");
- socket().shutdown(asio::ip::tcp::socket::shutdown_both,
- ignored_ec);
-- LOG_DEBUG(socket().native() << "closing socket");
-+ LOG_DEBUG(native() << "closing socket");
- socket().close();
- }
- } catch (Wt::AsioWrapper::system_error& e) {
-- LOG_DEBUG(socket().native() << ": error " << e.what());
-+ LOG_DEBUG(native() << ": error " << e.what());
- }
- }
-
-@@ -161,7 +161,7 @@ void SslConnection::startAsyncReadBody(ReplyPtr reply,
- Buffer& buffer, int timeout)
- {
- if (state_ & Reading) {
-- LOG_DEBUG(socket().native() << ": state_ = "
-+ LOG_DEBUG(native() << ": state_ = "
- << (state_ & Reading ? "reading " : "")
- << (state_ & Writing ? "writing " : ""));
- stop();
-@@ -198,7 +198,7 @@ void SslConnection
- int timeout)
- {
- if (state_ & Writing) {
-- LOG_DEBUG(socket().native() << ": state_ = "
-+ LOG_DEBUG(native() << ": state_ = "
- << (state_ & Reading ? "reading " : "")
- << (state_ & Writing ? "writing " : ""));
- stop();
-diff --git a/src/http/TcpConnection.C b/src/http/TcpConnection.C
-index ad731647..ab2476ed 100644
---- a/src/http/TcpConnection.C
-+++ b/src/http/TcpConnection.C
-@@ -38,17 +38,17 @@ asio::ip::tcp::socket& TcpConnection::socket()
-
- void TcpConnection::stop()
- {
-- LOG_DEBUG(socket().native() << ": stop()");
-+ LOG_DEBUG(native() << ": stop()");
-
- finishReply();
-
- try {
- Wt::AsioWrapper::error_code ignored_ec;
- socket_.shutdown(asio::ip::tcp::socket::shutdown_both, ignored_ec);
-- LOG_DEBUG(socket().native() << ": closing socket");
-+ LOG_DEBUG(native() << ": closing socket");
- socket_.close();
- } catch (Wt::AsioWrapper::system_error& e) {
-- LOG_DEBUG(socket().native() << ": error " << e.what());
-+ LOG_DEBUG(native() << ": error " << e.what());
- }
-
- Connection::stop();
-@@ -56,10 +56,10 @@ void TcpConnection::stop()
-
- void TcpConnection::startAsyncReadRequest(Buffer& buffer, int timeout)
- {
-- LOG_DEBUG(socket().native() << ": startAsyncReadRequest");
-+ LOG_DEBUG(native() << ": startAsyncReadRequest");
-
- if (state_ & Reading) {
-- LOG_DEBUG(socket().native() << ": state_ = "
-+ LOG_DEBUG(native() << ": state_ = "
- << (state_ & Reading ? "reading " : "")
- << (state_ & Writing ? "writing " : ""));
- stop();
-@@ -81,10 +81,10 @@ void TcpConnection::startAsyncReadRequest(Buffer& buffer, int timeout)
- void TcpConnection::startAsyncReadBody(ReplyPtr reply,
- Buffer& buffer, int timeout)
- {
-- LOG_DEBUG(socket().native() << ": startAsyncReadBody");
-+ LOG_DEBUG(native() << ": startAsyncReadBody");
-
- if (state_ & Reading) {
-- LOG_DEBUG(socket().native() << ": state_ = "
-+ LOG_DEBUG(native() << ": state_ = "
- << (state_ & Reading ? "reading " : "")
- << (state_ & Writing ? "writing " : ""));
- stop();
-@@ -109,10 +109,10 @@ void TcpConnection::startAsyncWriteResponse
- const std::vector<asio::const_buffer>& buffers,
- int timeout)
- {
-- LOG_DEBUG(socket().native() << ": startAsyncWriteResponse");
-+ LOG_DEBUG(native() << ": startAsyncWriteResponse");
-
- if (state_ & Writing) {
-- LOG_DEBUG(socket().native() << ": state_ = "
-+ LOG_DEBUG(native() << ": state_ = "
- << (state_ & Reading ? "reading " : "")
- << (state_ & Writing ? "writing " : ""));
- stop();
-diff --git a/src/web/Configuration.C b/src/web/Configuration.C
-index 6b6507b7..e5f06505 100644
---- a/src/web/Configuration.C
-+++ b/src/web/Configuration.C
-@@ -825,14 +825,10 @@ void Configuration::readApplicationSettings(xml_node<> *app)
- runDirectory_ = singleChildElementValue(fcgi, "run-directory",
- runDirectory_);
-
-- setInt(fcgi, "num-threads", numThreads_); // backward compatibility < 3.2.0
--
- xml_node<> *isapi = singleChildElement(app, "connector-isapi");
- if (!isapi)
- isapi = app; // backward compatibility
-
-- setInt(isapi, "num-threads", numThreads_); // backward compatibility < 3.2.0
--
- std::string maxMemoryRequestSizeStr =
- singleChildElementValue(isapi, "max-memory-request-size", "");
- if (!maxMemoryRequestSizeStr.empty()) {
Copied: wt/repos/community-x86_64/960e8d017b264710e344c63f9feb6ea1fa593eeb.patch (from rev 325659, wt/trunk/960e8d017b264710e344c63f9feb6ea1fa593eeb.patch)
===================================================================
--- 960e8d017b264710e344c63f9feb6ea1fa593eeb.patch (rev 0)
+++ 960e8d017b264710e344c63f9feb6ea1fa593eeb.patch 2018-05-20 21:42:19 UTC (rev 325660)
@@ -0,0 +1,638 @@
+From 960e8d017b264710e344c63f9feb6ea1fa593eeb Mon Sep 17 00:00:00 2001
+From: Roel Standaert <roel at emweb.be>
+Date: Tue, 19 Dec 2017 17:33:41 +0100
+Subject: [PATCH] Several changes:
+
+ - Compatibility with Boost 1.66 (asio changes)
+ - WDialog: Document that autofocus is enabled by default, and don't change focus if it was set explicitly
+ - Fix findById
+ - WWebWidget: Avoid copy of children vector
+ - Json: Document headers to include for Wt::Json::parse() and Wt::Json::serialize()
+ - <num-threads> does not exist anymore as a child of <connector-fcgi> or <connector-isapi>
+---
+ examples/filetreetable/CMakeLists.txt | 1 +
+ examples/gitmodel/CMakeLists.txt | 2 +-
+ examples/wt-homepage/CMakeLists.txt | 2 +-
+ src/Wt/AsioWrapper/strand.hpp | 19 +++++++++++++++++
+ src/Wt/Http/Client.C | 8 ++++++-
+ src/Wt/Http/Client.h | 5 +++++
+ src/Wt/Json/Value.h | 5 ++++-
+ src/Wt/WDialog.C | 6 ++++--
+ src/Wt/WDialog.h | 3 +++
+ src/Wt/WWebWidget.C | 12 ++++++++---
+ src/http/Connection.C | 39 +++++++++++++++++++++--------------
+ src/http/Connection.h | 8 +++++--
+ src/http/Reply.C | 3 ++-
+ src/http/Server.C | 4 ++++
+ src/http/Server.h | 2 +-
+ src/http/SessionProcess.C | 5 +++++
+ src/http/SslConnection.C | 16 +++++++-------
+ src/http/TcpConnection.C | 18 ++++++++--------
+ src/web/Configuration.C | 4 ----
+ 19 files changed, 113 insertions(+), 49 deletions(-)
+
+diff --git a/examples/filetreetable/CMakeLists.txt b/examples/filetreetable/CMakeLists.txt
+index 4265b9b7..c0c94100 100644
+--- a/examples/filetreetable/CMakeLists.txt
++++ b/examples/filetreetable/CMakeLists.txt
+@@ -10,6 +10,7 @@ ELSE(NOT BOOST_FS_LIB)
+
+ TARGET_LINK_LIBRARIES(filetreetable.wt
+ ${BOOST_FS_LIB}
++ ${BOOST_SYSTEM_LIB}
+ )
+
+ INCLUDE_DIRECTORIES(${WT_SOURCE_DIR}/src)
+diff --git a/examples/gitmodel/CMakeLists.txt b/examples/gitmodel/CMakeLists.txt
+index 9b124c98..ed557d1f 100644
+--- a/examples/gitmodel/CMakeLists.txt
++++ b/examples/gitmodel/CMakeLists.txt
+@@ -7,7 +7,7 @@ IF(BOOST_FS_LIB)
+ ../wt-homepage/SourceView.C
+ GitView.C
+ )
+- TARGET_LINK_LIBRARIES(gitview.wt ${BOOST_FS_LIB})
++ TARGET_LINK_LIBRARIES(gitview.wt ${BOOST_FS_LIB} ${BOOST_SYSTEM_LIB})
+
+ INCLUDE_DIRECTORIES(
+ ${WT_SOURCE_DIR}/src
+diff --git a/examples/wt-homepage/CMakeLists.txt b/examples/wt-homepage/CMakeLists.txt
+index b60e7c5f..513bc570 100644
+--- a/examples/wt-homepage/CMakeLists.txt
++++ b/examples/wt-homepage/CMakeLists.txt
+@@ -34,7 +34,7 @@ ENDIF(WT_EMWEB_BUILD)
+
+ WT_ADD_EXAMPLE(Home.wt ${SRC})
+
+-TARGET_LINK_LIBRARIES(Home.wt ${EXAMPLES_DBO_LIBS} ${BOOST_FS_LIB})
++TARGET_LINK_LIBRARIES(Home.wt ${EXAMPLES_DBO_LIBS} ${BOOST_FS_LIB} ${BOOST_SYSTEM_LIB})
+
+ # Test whether crypt(3) is provided by libc. If it's not, check if
+ # libcrypt exists and if it provides crypt(3).
+diff --git a/src/Wt/AsioWrapper/strand.hpp b/src/Wt/AsioWrapper/strand.hpp
+index 0c3a201f..9ddd8d1b 100644
+--- a/src/Wt/AsioWrapper/strand.hpp
++++ b/src/Wt/AsioWrapper/strand.hpp
+@@ -12,10 +12,29 @@
+ #ifdef WT_ASIO_IS_BOOST_ASIO
+
+ #include <boost/asio/strand.hpp>
++namespace Wt {
++ namespace AsioWrapper {
++#if BOOST_VERSION >= 106600
++ using strand = boost::asio::io_context::strand;
++#else
++ using strand = boost::asio::strand;
++#endif
++ }
++}
+
+ #else // WT_ASIO_IS_STANDALONE_ASIO
+
++#include <asio/version.hpp>
+ #include <asio/strand.hpp>
++namespace Wt {
++ namespace AsioWrapper {
++#if ASIO_VERSION >= 101100
++ using strand = asio::io_service::strand;
++#else
++ using strand = asio::strand;
++#endif
++ }
++}
+
+ #endif // WT_ASIO_IS_BOOST_ASIO
+
+diff --git a/src/Wt/Http/Client.C b/src/Wt/Http/Client.C
+index 85230d10..6bb21a95 100644
+--- a/src/Wt/Http/Client.C
++++ b/src/Wt/Http/Client.C
+@@ -642,7 +642,7 @@ private:
+
+ protected:
+ asio::io_service& ioService_;
+- asio::strand strand_;
++ AsioWrapper::strand strand_;
+ tcp::resolver resolver_;
+ asio::streambuf requestBuf_;
+ asio::streambuf responseBuf_;
+@@ -929,8 +929,14 @@ bool Client::request(Http::Method method, const std::string& url,
+
+ #ifdef WT_WITH_SSL
+ } else if (parsedUrl.protocol == "https") {
++#if defined(WT_ASIO_IS_BOOST_ASIO) && BOOST_VERSION >= 106600
++ asio::ssl::context context(asio::ssl::context::tls);
++#elif defined(WT_ASIO_IS_STANDALONE_ASIO) && ASIO_VERSION >= 101100
++ asio::ssl::context context(asio::ssl::context::sslv23);
++#else
+ asio::ssl::context context
+ (*ioService, asio::ssl::context::sslv23);
++#endif
+ long sslOptions = asio::ssl::context::no_sslv2 | asio::ssl::context::no_sslv3;
+ context.set_options(sslOptions);
+
+diff --git a/src/Wt/Http/Client.h b/src/Wt/Http/Client.h
+index f3c7169a..77946867 100644
+--- a/src/Wt/Http/Client.h
++++ b/src/Wt/Http/Client.h
+@@ -23,7 +23,12 @@
+ #ifdef WT_ASIO_IS_BOOST_ASIO
+ namespace boost {
+ namespace asio {
++#if BOOST_VERSION >= 106600
++ class io_context;
++ typedef io_context io_service;
++#else
+ class io_service;
++#endif
+ }
+ }
+ #else // WT_ASIO_IS_STANDALONE_ASIO
+diff --git a/src/Wt/Json/Value.h b/src/Wt/Json/Value.h
+index 948277fa..0b0bc0d7 100644
+--- a/src/Wt/Json/Value.h
++++ b/src/Wt/Json/Value.h
+@@ -23,7 +23,7 @@ class Array;
+ * \brief A JSON representation and parsing library.
+ *
+ * The JSON library contains data types to represent a JSON data
+- * structure (Value, Object and Array), and a JSON parser.
++ * structure (Value, Object and Array), a JSON parser, and a JSON serializer.
+ *
+ * Usage example:
+ * \code
+@@ -39,6 +39,9 @@ class Array;
+ * bool b = result.get("b");
+ * std::cerr << "a: " << s << ", b: " << b << std::endl; // a: That's great, b: true
+ * \endcode
++ *
++ * Include the <Wt/Json/Parser.h> header for Wt::Json::parse(), and
++ * the <Wt/Json/Serializer.h> header for Wt::Json::serialize().
+ */
+
+ /*! \brief Enumeration for the type of a JSON value.
+diff --git a/src/Wt/WDialog.C b/src/Wt/WDialog.C
+index 65ba51d7..31bd88b0 100644
+--- a/src/Wt/WDialog.C
++++ b/src/Wt/WDialog.C
+@@ -436,8 +436,10 @@ void WDialog::render(WFlags<RenderFlag> flags)
+ if (!isModal())
+ impl_->mouseWentDown().connect(this, &WDialog::bringToFront);
+
+- if ( flags.test(RenderFlag::Full) && autoFocus_)
+- impl_->setFirstFocus();
++ if ( flags.test(RenderFlag::Full) && autoFocus_) {
++ if (!impl_->findById(Wt::WApplication::instance()->focus()))
++ impl_->setFirstFocus();
++ }
+
+ WPopupWidget::render(flags);
+ }
+diff --git a/src/Wt/WDialog.h b/src/Wt/WDialog.h
+index 810d6945..967087c8 100644
+--- a/src/Wt/WDialog.h
++++ b/src/Wt/WDialog.h
+@@ -337,6 +337,9 @@ class WT_API WDialog : public WPopupWidget
+ bool closable() const { return closeIcon_ != nullptr; }
+
+ /*! \brief Set focus on the first widget in the dialog.
++ *
++ * Autofocus is enabled by default. If a widget inside of
++ * this dialog already has focus, the focus will not be changed.
+ */
+ void setAutoFocus(bool enable){ autoFocus_ = enable;}
+
+diff --git a/src/Wt/WWebWidget.C b/src/Wt/WWebWidget.C
+index 42fc00fd..5835244f 100644
+--- a/src/Wt/WWebWidget.C
++++ b/src/Wt/WWebWidget.C
+@@ -1983,9 +1983,13 @@ bool WWebWidget::setFirstFocus()
+ return true;
+ }
+
+- for (unsigned i = 0; i < children().size(); i++)
+- if (children()[i]->setFirstFocus())
+- return true;
++ bool result = false;
++ iterateChildren([&result](Wt::WWidget *w){
++ if (!result)
++ result = w->setFirstFocus();
++ });
++ if (result)
++ return true;
+
+ return false;
+ } else
+@@ -2207,6 +2211,8 @@ WWidget *WWebWidget::findById(const std::string& id)
+ if (!result)
+ result = c->findById(id);
+ });
++ if (result)
++ return result;
+ }
+
+ return nullptr;
+diff --git a/src/http/Connection.C b/src/http/Connection.C
+index cab77089..27380a8a 100644
+--- a/src/http/Connection.C
++++ b/src/http/Connection.C
+@@ -61,6 +61,15 @@ Connection::~Connection()
+ LOG_DEBUG("~Connection");
+ }
+
++asio::ip::tcp::socket::native_handle_type Connection::native()
++{
++#if (defined(WT_ASIO_IS_BOOST_ASIO) && BOOST_VERSION >= 106600) || (defined(WT_ASIO_IS_STANDALONE_ASIO) && ASIO_VERSION >= 101100)
++ return socket().native_handle();
++#else
++ return socket().native();
++#endif
++}
++
+ void Connection::finishReply()
+ {
+ if (!request_.uri.empty()) {
+@@ -78,7 +87,7 @@ void Connection::scheduleStop()
+
+ void Connection::start()
+ {
+- LOG_DEBUG(socket().native() << ": start()");
++ LOG_DEBUG(native() << ": start()");
+
+ request_parser_.reset();
+ request_.reset();
+@@ -106,7 +115,7 @@ void Connection::stop()
+ void Connection::setReadTimeout(int seconds)
+ {
+ if (seconds != 0) {
+- LOG_DEBUG(socket().native() << " setting read timeout (ws: "
++ LOG_DEBUG(native() << " setting read timeout (ws: "
+ << request_.webSocketVersion << ")");
+ state_ |= Reading;
+
+@@ -118,7 +127,7 @@ void Connection::setReadTimeout(int seconds)
+
+ void Connection::setWriteTimeout(int seconds)
+ {
+- LOG_DEBUG(socket().native() << " setting write timeout (ws: "
++ LOG_DEBUG(native() << " setting write timeout (ws: "
+ << request_.webSocketVersion << ")");
+ state_ |= Writing;
+
+@@ -129,7 +138,7 @@ void Connection::setWriteTimeout(int seconds)
+
+ void Connection::cancelReadTimer()
+ {
+- LOG_DEBUG(socket().native() << " cancel read timeout");
++ LOG_DEBUG(native() << " cancel read timeout");
+ state_.clear(Reading);
+
+ readTimer_.cancel();
+@@ -137,7 +146,7 @@ void Connection::cancelReadTimer()
+
+ void Connection::cancelWriteTimer()
+ {
+- LOG_DEBUG(socket().native() << " cancel write timeout");
++ LOG_DEBUG(native() << " cancel write timeout");
+ state_.clear(Writing);
+
+ writeTimer_.cancel();
+@@ -163,7 +172,7 @@ void Connection::handleReadRequest0()
+
+ #ifdef DEBUG
+ try {
+- LOG_DEBUG(socket().native() << "incoming request: "
++ LOG_DEBUG(socket().native_handle() << "incoming request: "
+ << socket().remote_endpoint().port() << " (avail= "
+ << (rcv_buffer_size_ - (rcv_remaining_ - buffer.data())) << "): "
+ << std::string(rcv_remaining_,
+@@ -189,7 +198,7 @@ void Connection::handleReadRequest0()
+ if (doWebSockets)
+ request_.enableWebSocket();
+
+- LOG_DEBUG(socket().native() << "request: " << status);
++ LOG_DEBUG(native() << "request: " << status);
+
+ if (status >= 300)
+ sendStockReply(status);
+@@ -242,7 +251,7 @@ void Connection::sendStockReply(StockReply::status_type status)
+ void Connection::handleReadRequest(const Wt::AsioWrapper::error_code& e,
+ std::size_t bytes_transferred)
+ {
+- LOG_DEBUG(socket().native() << ": handleReadRequest(): " << e.message());
++ LOG_DEBUG(native() << ": handleReadRequest(): " << e.message());
+
+ cancelReadTimer();
+
+@@ -261,7 +270,7 @@ void Connection::close()
+ cancelReadTimer();
+ cancelWriteTimer();
+
+- LOG_DEBUG(socket().native() << ": close()");
++ LOG_DEBUG(native() << ": close()");
+
+ ConnectionManager_.stop(shared_from_this());
+ }
+@@ -274,7 +283,7 @@ bool Connection::closed() const
+
+ void Connection::handleError(const Wt::AsioWrapper::error_code& e)
+ {
+- LOG_DEBUG(socket().native() << ": error: " << e.message());
++ LOG_DEBUG(native() << ": error: " << e.message());
+
+ close();
+ }
+@@ -349,7 +358,7 @@ void Connection::handleReadBody0(ReplyPtr reply,
+ const Wt::AsioWrapper::error_code& e,
+ std::size_t bytes_transferred)
+ {
+- LOG_DEBUG(socket().native() << ": handleReadBody0(): " << e.message());
++ LOG_DEBUG(native() << ": handleReadBody0(): " << e.message());
+
+ if (disconnectCallback_) {
+ if (e && e != asio::error::operation_aborted) {
+@@ -357,7 +366,7 @@ void Connection::handleReadBody0(ReplyPtr reply,
+ disconnectCallback_ = boost::function<void()>();
+ f();
+ } else if (!e) {
+- LOG_ERROR(socket().native()
++ LOG_ERROR(native()
+ << ": handleReadBody(): while waiting for disconnect, "
+ "received unexpected data, closing");
+ close();
+@@ -410,7 +419,7 @@ void Connection::startWriteResponse(ReplyPtr reply)
+ }
+ #endif
+
+- LOG_DEBUG(socket().native() << " sending: " << s << "(buffers: "
++ LOG_DEBUG(native() << " sending: " << s << "(buffers: "
+ << buffers.size() << ")");
+
+ if (!buffers.empty()) {
+@@ -423,7 +432,7 @@ void Connection::startWriteResponse(ReplyPtr reply)
+
+ void Connection::handleWriteResponse(ReplyPtr reply)
+ {
+- LOG_DEBUG(socket().native() << ": handleWriteResponse() " <<
++ LOG_DEBUG(native() << ": handleWriteResponse() " <<
+ haveResponse_ << " " << responseDone_);
+ if (haveResponse_)
+ startWriteResponse(reply);
+@@ -458,7 +467,7 @@ void Connection::handleWriteResponse0(ReplyPtr reply,
+ const Wt::AsioWrapper::error_code& e,
+ std::size_t bytes_transferred)
+ {
+- LOG_DEBUG(socket().native() << ": handleWriteResponse0(): "
++ LOG_DEBUG(native() << ": handleWriteResponse0(): "
+ << bytes_transferred << " ; " << e.message());
+
+ cancelWriteTimer();
+diff --git a/src/http/Connection.h b/src/http/Connection.h
+index b0b71a36..f925177c 100644
+--- a/src/http/Connection.h
++++ b/src/http/Connection.h
+@@ -18,6 +18,7 @@
+ #define HTTP_CONNECTION_HPP
+
+ #include <Wt/AsioWrapper/asio.hpp>
++#include <Wt/AsioWrapper/strand.hpp>
+ #include <Wt/AsioWrapper/steady_timer.hpp>
+
+ #include "Buffer.h"
+@@ -61,7 +62,7 @@ class Connection : public std::enable_shared_from_this<Connection>
+ virtual ~Connection();
+
+ Server *server() const { return server_; }
+- asio::strand& strand() { return strand_; }
++ Wt::AsioWrapper::strand& strand() { return strand_; }
+
+ /// Stop all asynchronous operations associated with the connection.
+ void scheduleStop();
+@@ -86,6 +87,9 @@ class Connection : public std::enable_shared_from_this<Connection>
+ const std::function<void()>& callback);
+
+ protected:
++ /// Get the native handle of the socket
++ asio::ip::tcp::socket::native_handle_type native();
++
+ void handleWriteResponse0(ReplyPtr reply,
+ const Wt::AsioWrapper::error_code& e,
+ std::size_t bytes_transferred);
+@@ -104,7 +108,7 @@ class Connection : public std::enable_shared_from_this<Connection>
+ /// The manager for this connection.
+ ConnectionManager& ConnectionManager_;
+
+- asio::strand strand_;
++ Wt::AsioWrapper::strand strand_;
+
+ void finishReply();
+
+diff --git a/src/http/Reply.C b/src/http/Reply.C
+index 0d79e39f..b55ece21 100644
+--- a/src/http/Reply.C
++++ b/src/http/Reply.C
+@@ -596,7 +596,8 @@ bool Reply::encodeNextContentBuffer(
+ originalSize += bs;
+
+ gzipStrm_.avail_in = bs;
+- gzipStrm_.next_in = (unsigned char *)asio::detail::buffer_cast_helper(b);
++ gzipStrm_.next_in = const_cast<unsigned char*>(
++ asio::buffer_cast<const unsigned char*>(b));
+
+ unsigned char out[16*1024];
+ do {
+diff --git a/src/http/Server.C b/src/http/Server.C
+index fc69be21..ad16591f 100644
+--- a/src/http/Server.C
++++ b/src/http/Server.C
+@@ -116,7 +116,11 @@ Server::Server(const Configuration& config, Wt::WServer& wtServer)
+ accept_strand_(wt_.ioService()),
+ // post_strand_(ioService_),
+ #ifdef HTTP_WITH_SSL
++#if (defined(WT_ASIO_IS_BOOST_ASIO) && BOOST_VERSION >= 106600) || (defined(WT_ASIO_IS_STANDALONE_ASIO) && ASIO_VERSION >= 101100)
++ ssl_context_(asio::ssl::context::sslv23),
++#else
+ ssl_context_(wt_.ioService(), asio::ssl::context::sslv23),
++#endif
+ #endif // HTTP_WITH_SSL
+ connection_manager_(),
+ sessionManager_(0),
+diff --git a/src/http/Server.h b/src/http/Server.h
+index 3d3229ac..97387b11 100644
+--- a/src/http/Server.h
++++ b/src/http/Server.h
+@@ -129,7 +129,7 @@ class Server
+ Wt::WLogger accessLogger_;
+
+ /// The strand for handleTcpAccept(), handleSslAccept() and handleStop()
+- asio::strand accept_strand_;
++ Wt::AsioWrapper::strand accept_strand_;
+
+ /// Acceptors used to listen for incoming http connections.
+ std::vector<TcpListener> tcp_listeners_;
+diff --git a/src/http/SessionProcess.C b/src/http/SessionProcess.C
+index 72d9a881..fb057f2f 100644
+--- a/src/http/SessionProcess.C
++++ b/src/http/SessionProcess.C
+@@ -16,6 +16,7 @@
+ #include <signal.h>
+ #endif // WT_WIN32
+
++#include "Wt/WConfig.h"
+ #include "Wt/WLogger.h"
+
+ namespace Wt {
+@@ -80,7 +81,11 @@ void SessionProcess::asyncExec(const Configuration &config,
+ if (!ec)
+ acceptor_->listen(0, ec);
+ #ifndef WT_WIN32
++#if (defined(WT_ASIO_IS_BOOST_ASIO) && BOOST_VERSION >= 106600) || (defined(WT_ASIO_IS_STANDALONE_ASIO) && ASIO_VERSION >= 101100)
++ fcntl(acceptor_->native_handle(), F_SETFD, FD_CLOEXEC);
++#else
+ fcntl(acceptor_->native(), F_SETFD, FD_CLOEXEC);
++#endif
+ #endif // !WT_WIN32
+ if (ec) {
+ LOG_ERROR("Couldn't create listening socket: " << ec.message());
+diff --git a/src/http/SslConnection.C b/src/http/SslConnection.C
+index 74c8642a..12eb7465 100644
+--- a/src/http/SslConnection.C
++++ b/src/http/SslConnection.C
+@@ -81,9 +81,9 @@ void SslConnection::handleHandshake(const Wt::AsioWrapper::error_code& error)
+
+ void SslConnection::stop()
+ {
+- LOG_DEBUG(socket().native() << ": stop()");
++ LOG_DEBUG(native() << ": stop()");
+ finishReply();
+- LOG_DEBUG(socket().native() << ": SSL shutdown");
++ LOG_DEBUG(native() << ": SSL shutdown");
+
+ Connection::stop();
+
+@@ -108,20 +108,20 @@ void SslConnection::stopNextLayer(const Wt::AsioWrapper::error_code& ec)
+ // In case of timeout, we will get here twice.
+ sslShutdownTimer_.cancel();
+ if (ec) {
+- LOG_DEBUG(socket().native() << ": ssl_shutdown failed:"
++ LOG_DEBUG(native() << ": ssl_shutdown failed:"
+ << ec.message());
+ }
+ try {
+ if (socket().is_open()) {
+ Wt::AsioWrapper::error_code ignored_ec;
+- LOG_DEBUG(socket().native() << ": socket shutdown");
++ LOG_DEBUG(native() << ": socket shutdown");
+ socket().shutdown(asio::ip::tcp::socket::shutdown_both,
+ ignored_ec);
+- LOG_DEBUG(socket().native() << "closing socket");
++ LOG_DEBUG(native() << "closing socket");
+ socket().close();
+ }
+ } catch (Wt::AsioWrapper::system_error& e) {
+- LOG_DEBUG(socket().native() << ": error " << e.what());
++ LOG_DEBUG(native() << ": error " << e.what());
+ }
+ }
+
+@@ -161,7 +161,7 @@ void SslConnection::startAsyncReadBody(ReplyPtr reply,
+ Buffer& buffer, int timeout)
+ {
+ if (state_ & Reading) {
+- LOG_DEBUG(socket().native() << ": state_ = "
++ LOG_DEBUG(native() << ": state_ = "
+ << (state_ & Reading ? "reading " : "")
+ << (state_ & Writing ? "writing " : ""));
+ stop();
+@@ -198,7 +198,7 @@ void SslConnection
+ int timeout)
+ {
+ if (state_ & Writing) {
+- LOG_DEBUG(socket().native() << ": state_ = "
++ LOG_DEBUG(native() << ": state_ = "
+ << (state_ & Reading ? "reading " : "")
+ << (state_ & Writing ? "writing " : ""));
+ stop();
+diff --git a/src/http/TcpConnection.C b/src/http/TcpConnection.C
+index ad731647..ab2476ed 100644
+--- a/src/http/TcpConnection.C
++++ b/src/http/TcpConnection.C
+@@ -38,17 +38,17 @@ asio::ip::tcp::socket& TcpConnection::socket()
+
+ void TcpConnection::stop()
+ {
+- LOG_DEBUG(socket().native() << ": stop()");
++ LOG_DEBUG(native() << ": stop()");
+
+ finishReply();
+
+ try {
+ Wt::AsioWrapper::error_code ignored_ec;
+ socket_.shutdown(asio::ip::tcp::socket::shutdown_both, ignored_ec);
+- LOG_DEBUG(socket().native() << ": closing socket");
++ LOG_DEBUG(native() << ": closing socket");
+ socket_.close();
+ } catch (Wt::AsioWrapper::system_error& e) {
+- LOG_DEBUG(socket().native() << ": error " << e.what());
++ LOG_DEBUG(native() << ": error " << e.what());
+ }
+
+ Connection::stop();
+@@ -56,10 +56,10 @@ void TcpConnection::stop()
+
+ void TcpConnection::startAsyncReadRequest(Buffer& buffer, int timeout)
+ {
+- LOG_DEBUG(socket().native() << ": startAsyncReadRequest");
++ LOG_DEBUG(native() << ": startAsyncReadRequest");
+
+ if (state_ & Reading) {
+- LOG_DEBUG(socket().native() << ": state_ = "
++ LOG_DEBUG(native() << ": state_ = "
+ << (state_ & Reading ? "reading " : "")
+ << (state_ & Writing ? "writing " : ""));
+ stop();
+@@ -81,10 +81,10 @@ void TcpConnection::startAsyncReadRequest(Buffer& buffer, int timeout)
+ void TcpConnection::startAsyncReadBody(ReplyPtr reply,
+ Buffer& buffer, int timeout)
+ {
+- LOG_DEBUG(socket().native() << ": startAsyncReadBody");
++ LOG_DEBUG(native() << ": startAsyncReadBody");
+
+ if (state_ & Reading) {
+- LOG_DEBUG(socket().native() << ": state_ = "
++ LOG_DEBUG(native() << ": state_ = "
+ << (state_ & Reading ? "reading " : "")
+ << (state_ & Writing ? "writing " : ""));
+ stop();
+@@ -109,10 +109,10 @@ void TcpConnection::startAsyncWriteResponse
+ const std::vector<asio::const_buffer>& buffers,
+ int timeout)
+ {
+- LOG_DEBUG(socket().native() << ": startAsyncWriteResponse");
++ LOG_DEBUG(native() << ": startAsyncWriteResponse");
+
+ if (state_ & Writing) {
+- LOG_DEBUG(socket().native() << ": state_ = "
++ LOG_DEBUG(native() << ": state_ = "
+ << (state_ & Reading ? "reading " : "")
+ << (state_ & Writing ? "writing " : ""));
+ stop();
+diff --git a/src/web/Configuration.C b/src/web/Configuration.C
+index 6b6507b7..e5f06505 100644
+--- a/src/web/Configuration.C
++++ b/src/web/Configuration.C
+@@ -825,14 +825,10 @@ void Configuration::readApplicationSettings(xml_node<> *app)
+ runDirectory_ = singleChildElementValue(fcgi, "run-directory",
+ runDirectory_);
+
+- setInt(fcgi, "num-threads", numThreads_); // backward compatibility < 3.2.0
+-
+ xml_node<> *isapi = singleChildElement(app, "connector-isapi");
+ if (!isapi)
+ isapi = app; // backward compatibility
+
+- setInt(isapi, "num-threads", numThreads_); // backward compatibility < 3.2.0
+-
+ std::string maxMemoryRequestSizeStr =
+ singleChildElementValue(isapi, "max-memory-request-size", "");
+ if (!maxMemoryRequestSizeStr.empty()) {
Deleted: PKGBUILD
===================================================================
--- PKGBUILD 2018-05-20 21:42:11 UTC (rev 325659)
+++ PKGBUILD 2018-05-20 21:42:19 UTC (rev 325660)
@@ -1,58 +0,0 @@
-# $Id$
-# Maintainer: Sergej Pupykin <pupykin.s+arch at gmail.com>
-# Maintainer: Sven-Hendrik Haase <sh at lutzhaase.com>
-# Contributor: Denis Martinez <deuns.martinez at gmail.com>
-
-pkgname=wt
-pkgver=4.0.2
-pkgrel=3
-pkgdesc="a C++ library and application server for developing and deploying web applications"
-arch=('x86_64')
-url="http://www.webtoolkit.eu/"
-license=('GPL')
-depends=('boost-libs' 'libharu' 'graphicsmagick' 'pango' 'zlib' 'libgl')
-makedepends=('boost' 'cmake' 'postgresql-libs' 'fcgi' 'sqlite' 'mysql++' 'qt4' 'doxygen' 'mesa' 'glu')
-optdepends=('openssl: for SSL support in built-in webserver'
- 'fcgi: for FastCGI support'
- 'postgresql-libs: for PostgreSQL Dbo support'
- 'libmariadbclient: for MySQL Dbo support'
- 'sqlite: for Sqlite Dbo support'
- 'mysql++: for the hangman example'
- 'qt4: for the Wt/Qt interopability example (wtwithqt)')
-backup=('etc/wt/wt_config.xml')
-source=("$pkgname-$pkgver.tar.gz::https://github.com/kdeforche/wt/archive/${pkgver}.tar.gz"
- "960e8d017b264710e344c63f9feb6ea1fa593eeb.patch")
-sha512sums=('85e35374bec662c314b20d0699656895364386ee2e51ca99d131702f02ea5a4defeb357fdda3cf068049f077daaa7a3af1dc3d239fb73b3cf13b574778e5609c'
- 'b827b7bb0c29874bcd75925b61e9ffa8ee466e340bbed68914979058eab526371a671f183e16778a6efef6bde31af8773d59528af9eaba3895a57da1eba21aaf')
-
-prepare() {
- cd "$srcdir"/${pkgname}-${pkgver}
-
- patch -Np1 < "$srcdir"/960e8d017b264710e344c63f9feb6ea1fa593eeb.patch
-}
-
-build() {
- cd "$srcdir"/${pkgname}-${pkgver}
-
- [[ -d build ]] && rm -r build
- mkdir -p build && cd build
- cmake \
- -DCONNECTOR_HTTP=ON \
- -DWT_CPP_11_MODE=-std=c++11 \
- -DWT_WRASTERIMAGE_IMPLEMENTATION=GraphicsMagick \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DWEBUSER=http \
- -DWEBGROUP=http \
- -DUSE_SYSTEM_SQLITE3=ON \
- -DINSTALL_EXAMPLES=ON \
- -DBUILD_EXAMPLES=ON \
- -DINSTALL_FINDWT_CMAKE_FILE=ON \
- ..
- make
-}
-
-package() {
- cd "$srcdir"/${pkgname}-${pkgver}/build
-
- make DESTDIR="$pkgdir" install
-}
Copied: wt/repos/community-x86_64/PKGBUILD (from rev 325659, wt/trunk/PKGBUILD)
===================================================================
--- PKGBUILD (rev 0)
+++ PKGBUILD 2018-05-20 21:42:19 UTC (rev 325660)
@@ -0,0 +1,50 @@
+# $Id$
+# Maintainer: Sergej Pupykin <pupykin.s+arch at gmail.com>
+# Maintainer: Sven-Hendrik Haase <sh at lutzhaase.com>
+# Contributor: Denis Martinez <deuns.martinez at gmail.com>
+
+pkgname=wt
+pkgver=4.0.3
+pkgrel=1
+pkgdesc="a C++ library and application server for developing and deploying web applications"
+arch=('x86_64')
+url="http://www.webtoolkit.eu/"
+license=('GPL')
+depends=('boost-libs' 'libharu' 'graphicsmagick' 'pango' 'zlib' 'libgl')
+makedepends=('boost' 'cmake' 'postgresql-libs' 'fcgi' 'sqlite' 'mysql++' 'qt4' 'doxygen' 'mesa' 'glu')
+optdepends=('openssl: for SSL support in built-in webserver'
+ 'fcgi: for FastCGI support'
+ 'postgresql-libs: for PostgreSQL Dbo support'
+ 'libmariadbclient: for MySQL Dbo support'
+ 'sqlite: for Sqlite Dbo support'
+ 'mysql++: for the hangman example'
+ 'qt4: for the Wt/Qt interopability example (wtwithqt)')
+backup=('etc/wt/wt_config.xml')
+source=("$pkgname-$pkgver.tar.gz::https://github.com/kdeforche/wt/archive/${pkgver}.tar.gz")
+sha512sums=('5985f72cbd3065ac696aad4d11711f2d69e066ee17141b56fd7c2616c7f7353586ab8d13db2baa90fa8f3cb116aa7c9044ee3cc42e99e8f5c8704f886ac3b2b6')
+
+build() {
+ cd "$srcdir"/${pkgname}-${pkgver}
+
+ [[ -d build ]] && rm -r build
+ mkdir -p build && cd build
+ cmake \
+ -DCONNECTOR_HTTP=ON \
+ -DWT_CPP_11_MODE=-std=c++11 \
+ -DWT_WRASTERIMAGE_IMPLEMENTATION=GraphicsMagick \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DWEBUSER=http \
+ -DWEBGROUP=http \
+ -DUSE_SYSTEM_SQLITE3=ON \
+ -DINSTALL_EXAMPLES=ON \
+ -DBUILD_EXAMPLES=ON \
+ -DINSTALL_FINDWT_CMAKE_FILE=ON \
+ ..
+ make
+}
+
+package() {
+ cd "$srcdir"/${pkgname}-${pkgver}/build
+
+ make DESTDIR="$pkgdir" install
+}
More information about the arch-commits
mailing list