Make websocketpp work better with newer compilers


Change-Id: Idf3c4ae8d447f32bafffe58280898e61224d03d4
Signed-off-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
diff --git a/WORKSPACE b/WORKSPACE
index 3ed0f2b..0fd8cbd 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -1192,6 +1192,8 @@
 http_archive(
     name = "com_github_zaphoyd_websocketpp",
     build_file = "//third_party/websocketpp:websocketpp.BUILD",
+    patch_args = ["-p1"],
+    patches = ["//third_party/websocketpp:websocketpp.patch"],
     sha256 = "6ce889d85ecdc2d8fa07408d6787e7352510750daa66b5ad44aacb47bea76755",
     strip_prefix = "websocketpp-0.8.2",
     url = "https://github.com/zaphoyd/websocketpp/archive/refs/tags/0.8.2.tar.gz",
diff --git a/third_party/websocketpp/websocketpp.patch b/third_party/websocketpp/websocketpp.patch
new file mode 100644
index 0000000..6c2292b
--- /dev/null
+++ b/third_party/websocketpp/websocketpp.patch
@@ -0,0 +1,236 @@
+diff --git a/websocketpp/endpoint.hpp b/websocketpp/endpoint.hpp
+index c124b1d..177bda6 100644
+--- a/websocketpp/endpoint.hpp
++++ b/websocketpp/endpoint.hpp
+@@ -109,26 +109,26 @@ public:
+ 
+ 
+     /// Destructor
+-    ~endpoint<connection,config>() {}
++    ~endpoint() {}
+ 
+     #ifdef _WEBSOCKETPP_DEFAULT_DELETE_FUNCTIONS_
+         // no copy constructor because endpoints are not copyable
+         endpoint(endpoint &) = delete;
+-    
++
+         // no copy assignment operator because endpoints are not copyable
+         endpoint & operator=(endpoint const &) = delete;
+     #endif // _WEBSOCKETPP_DEFAULT_DELETE_FUNCTIONS_
+ 
+     #ifdef _WEBSOCKETPP_MOVE_SEMANTICS_
+         /// Move constructor
+-        endpoint(endpoint && o) 
++        endpoint(endpoint && o)
+          : config::transport_type(std::move(o))
+          , config::endpoint_base(std::move(o))
+          , m_alog(std::move(o.m_alog))
+          , m_elog(std::move(o.m_elog))
+          , m_user_agent(std::move(o.m_user_agent))
+          , m_open_handler(std::move(o.m_open_handler))
+-         
++
+          , m_close_handler(std::move(o.m_close_handler))
+          , m_fail_handler(std::move(o.m_fail_handler))
+          , m_ping_handler(std::move(o.m_ping_handler))
+@@ -146,7 +146,7 @@ public:
+          , m_max_http_body_size(o.m_max_http_body_size)
+ 
+          , m_rng(std::move(o.m_rng))
+-         , m_is_server(o.m_is_server)         
++         , m_is_server(o.m_is_server)
+         {}
+ 
+     #ifdef _WEBSOCKETPP_DEFAULT_DELETE_FUNCTIONS_
+@@ -403,9 +403,9 @@ public:
+ 
+     /// Get default maximum message size
+     /**
+-     * Get the default maximum message size that will be used for new 
++     * Get the default maximum message size that will be used for new
+      * connections created by this endpoint. The maximum message size determines
+-     * the point at which the connection will fail a connection with the 
++     * the point at which the connection will fail a connection with the
+      * message_too_big protocol error.
+      *
+      * The default is set by the max_message_size value from the template config
+@@ -415,10 +415,10 @@ public:
+     size_t get_max_message_size() const {
+         return m_max_message_size;
+     }
+-    
++
+     /// Set default maximum message size
+     /**
+-     * Set the default maximum message size that will be used for new 
++     * Set the default maximum message size that will be used for new
+      * connections created by this endpoint. Maximum message size determines the
+      * point at which the connection will fail a connection with the
+      * message_too_big protocol error.
+@@ -449,7 +449,7 @@ public:
+     size_t get_max_http_body_size() const {
+         return m_max_http_body_size;
+     }
+-    
++
+     /// Set maximum HTTP message body size
+     /**
+      * Set maximum HTTP message body size. Maximum message body size determines
+@@ -484,32 +484,32 @@ public:
+ 
+     /// Pause reading of new data (exception free)
+     /**
+-     * Signals to the connection to halt reading of new data. While reading is 
++     * Signals to the connection to halt reading of new data. While reading is
+      * paused, the connection will stop reading from its associated socket. In
+      * turn this will result in TCP based flow control kicking in and slowing
+      * data flow from the remote endpoint.
+      *
+-     * This is useful for applications that push new requests to a queue to be 
++     * This is useful for applications that push new requests to a queue to be
+      * processed by another thread and need a way to signal when their request
+      * queue is full without blocking the network processing thread.
+      *
+      * Use `resume_reading()` to resume.
+      *
+      * If supported by the transport this is done asynchronously. As such
+-     * reading may not stop until the current read operation completes. 
++     * reading may not stop until the current read operation completes.
+      * Typically you can expect to receive no more bytes after initiating a read
+      * pause than the size of the read buffer.
+      *
+      * If reading is paused for this connection already nothing is changed.
+      */
+     void pause_reading(connection_hdl hdl, lib::error_code & ec);
+-    
++
+     /// Pause reading of new data
+     void pause_reading(connection_hdl hdl);
+ 
+     /// Resume reading of new data (exception free)
+     /**
+-     * Signals to the connection to resume reading of new data after it was 
++     * Signals to the connection to resume reading of new data after it was
+      * paused by `pause_reading()`.
+      *
+      * If reading is not paused for this connection already nothing is changed.
+@@ -533,7 +533,7 @@ public:
+      * @param ec A status code, zero on success, non-zero otherwise
+      */
+     void send_http_response(connection_hdl hdl, lib::error_code & ec);
+-        
++
+     /// Send deferred HTTP Response (exception free)
+     /**
+      * Sends an http response to an HTTP connection that was deferred. This will
+diff --git a/websocketpp/logger/basic.hpp b/websocketpp/logger/basic.hpp
+index 8451413..7dd8684 100644
+--- a/websocketpp/logger/basic.hpp
++++ b/websocketpp/logger/basic.hpp
+@@ -58,46 +58,46 @@ namespace log {
+ template <typename concurrency, typename names>
+ class basic {
+ public:
+-    basic<concurrency,names>(channel_type_hint::value h =
++    basic(channel_type_hint::value h =
+         channel_type_hint::access)
+       : m_static_channels(0xffffffff)
+       , m_dynamic_channels(0)
+       , m_out(h == channel_type_hint::error ? &std::cerr : &std::cout) {}
+ 
+-    basic<concurrency,names>(std::ostream * out)
++    basic(std::ostream * out)
+       : m_static_channels(0xffffffff)
+       , m_dynamic_channels(0)
+       , m_out(out) {}
+ 
+-    basic<concurrency,names>(level c, channel_type_hint::value h =
++    basic(level c, channel_type_hint::value h =
+         channel_type_hint::access)
+       : m_static_channels(c)
+       , m_dynamic_channels(0)
+       , m_out(h == channel_type_hint::error ? &std::cerr : &std::cout) {}
+ 
+-    basic<concurrency,names>(level c, std::ostream * out)
++    basic(level c, std::ostream * out)
+       : m_static_channels(c)
+       , m_dynamic_channels(0)
+       , m_out(out) {}
+ 
+     /// Destructor
+-    ~basic<concurrency,names>() {}
++    ~basic() {}
+ 
+     /// Copy constructor
+-    basic<concurrency,names>(basic<concurrency,names> const & other)
++    basic(basic<concurrency,names> const & other)
+      : m_static_channels(other.m_static_channels)
+      , m_dynamic_channels(other.m_dynamic_channels)
+      , m_out(other.m_out)
+     {}
+-    
++
+ #ifdef _WEBSOCKETPP_DEFAULT_DELETE_FUNCTIONS_
+     // no copy assignment operator because of const member variables
+-    basic<concurrency,names> & operator=(basic<concurrency,names> const &) = delete;
++    basic & operator=(basic<concurrency,names> const &) = delete;
+ #endif // _WEBSOCKETPP_DEFAULT_DELETE_FUNCTIONS_
+ 
+ #ifdef _WEBSOCKETPP_MOVE_SEMANTICS_
+     /// Move constructor
+-    basic<concurrency,names>(basic<concurrency,names> && other)
++    basic(basic<concurrency,names> && other)
+      : m_static_channels(other.m_static_channels)
+      , m_dynamic_channels(other.m_dynamic_channels)
+      , m_out(other.m_out)
+@@ -105,7 +105,7 @@ public:
+ 
+ #ifdef _WEBSOCKETPP_DEFAULT_DELETE_FUNCTIONS_
+     // no move assignment operator because of const member variables
+-    basic<concurrency,names> & operator=(basic<concurrency,names> &&) = delete;
++    basic & operator=(basic<concurrency,names> &&) = delete;
+ #endif // _WEBSOCKETPP_DEFAULT_DELETE_FUNCTIONS_
+ 
+ #endif // _WEBSOCKETPP_MOVE_SEMANTICS_
+diff --git a/websocketpp/roles/server_endpoint.hpp b/websocketpp/roles/server_endpoint.hpp
+index 9cc652f..a96471b 100644
+--- a/websocketpp/roles/server_endpoint.hpp
++++ b/websocketpp/roles/server_endpoint.hpp
+@@ -72,23 +72,23 @@ public:
+     }
+ 
+     /// Destructor
+-    ~server<config>() {}
++    ~server() {}
+ 
+ #ifdef _WEBSOCKETPP_DEFAULT_DELETE_FUNCTIONS_
+     // no copy constructor because endpoints are not copyable
+-    server<config>(server<config> &) = delete;
++    server(server<config> &) = delete;
+ 
+     // no copy assignment operator because endpoints are not copyable
+-    server<config> & operator=(server<config> const &) = delete;
++    server & operator=(server<config> const &) = delete;
+ #endif // _WEBSOCKETPP_DEFAULT_DELETE_FUNCTIONS_
+ 
+ #ifdef _WEBSOCKETPP_MOVE_SEMANTICS_
+     /// Move constructor
+-    server<config>(server<config> && o) : endpoint<connection<config>,config>(std::move(o)) {}
++    server(server<config> && o) : endpoint<connection<config>,config>(std::move(o)) {}
+ 
+ #ifdef _WEBSOCKETPP_DEFAULT_DELETE_FUNCTIONS_
+     // no move assignment operator because of const member variables
+-    server<config> & operator=(server<config> &&) = delete;
++    server & operator=(server<config> &&) = delete;
+ #endif // _WEBSOCKETPP_DEFAULT_DELETE_FUNCTIONS_
+ 
+ #endif // _WEBSOCKETPP_MOVE_SEMANTICS_
+@@ -123,7 +123,7 @@ public:
+             ec = error::make_error_code(error::async_accept_not_listening);
+             return;
+         }
+-        
++
+         ec = lib::error_code();
+         connection_ptr con = get_connection();
+