diff --git a/.gitmodules b/.gitmodules
index 0b8f2ee..edc03cc 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,3 @@
 [submodule "websocketpp"]
     path = websocketpp
-    url = https://github.com/zaphoyd/websocketpp.git
+    url = https://github.com/cawka/websocketpp.git
diff --git a/.waf-tools/websocket.py b/.waf-tools/websocket.py
index 33a1ff6..1c5fef5 100644
--- a/.waf-tools/websocket.py
+++ b/.waf-tools/websocket.py
@@ -65,7 +65,7 @@
             Logs.warn('    git submodule update --init')
             Logs.warn('Otherwise, manually download and extract the websocketpp library:')
             Logs.warn('    mkdir -p websocketpp')
-            Logs.warn('    curl -L https://github.com/zaphoyd/websocketpp/archive/0.8.1.tar.gz > websocketpp.tar.gz')
+            Logs.warn('    curl -L https://github.com/cawka/websocketpp/archive/0.8.1-hotfix.tar.gz > websocketpp.tar.gz')
             Logs.warn('    tar xf websocketpp.tar.gz -C websocketpp/ --strip 1')
             Logs.warn('Alternatively, WebSocket support can be disabled with --without-websocket')
             self.fatal('WebSocket++ not found')
diff --git a/daemon/face/tcp-channel.cpp b/daemon/face/tcp-channel.cpp
index dc0576f..a26c91e 100644
--- a/daemon/face/tcp-channel.cpp
+++ b/daemon/face/tcp-channel.cpp
@@ -83,7 +83,7 @@
     return;
   }
 
-  auto clientSocket = make_shared<ip::tcp::socket>(std::ref(getGlobalIoService()));
+  auto clientSocket = make_shared<ip::tcp::socket>(getGlobalIoService());
   auto timeoutEvent = getScheduler().schedule(timeout, [=] {
     handleConnectTimeout(remoteEndpoint, clientSocket, onConnectFailed);
   });
diff --git a/daemon/face/tcp-transport.cpp b/daemon/face/tcp-transport.cpp
index 58c4add..0da07af 100644
--- a/daemon/face/tcp-transport.cpp
+++ b/daemon/face/tcp-transport.cpp
@@ -133,7 +133,13 @@
   BOOST_ASSERT(getState() == TransportState::DOWN);
 
   // recreate the socket
-  m_socket = protocol::socket(m_socket.get_io_service());
+  m_socket = protocol::socket(
+#if BOOST_VERSION >= 107000
+                              m_socket.get_executor()
+#else
+                              m_socket.get_io_service()
+#endif // BOOST_VERSION >= 107000
+                              );
   this->resetReceiveBuffer();
   this->resetSendQueue();
 
diff --git a/daemon/face/websocket-channel.cpp b/daemon/face/websocket-channel.cpp
index f3f69ba..20b6686 100644
--- a/daemon/face/websocket-channel.cpp
+++ b/daemon/face/websocket-channel.cpp
@@ -123,7 +123,7 @@
   NFD_LOG_CHAN_TRACE("Incoming connection from " << m_server.get_con_from_hdl(hdl)->get_remote_endpoint());
 
   auto linkService = make_unique<GenericLinkService>();
-  auto transport = make_unique<WebSocketTransport>(hdl, std::ref(m_server), m_pingInterval);
+  auto transport = make_unique<WebSocketTransport>(hdl, m_server, m_pingInterval);
   auto face = make_shared<Face>(std::move(linkService), std::move(transport));
 
   BOOST_ASSERT(m_channelFaces.count(hdl) == 0);
diff --git a/tests/daemon/face/tcp-transport.t.cpp b/tests/daemon/face/tcp-transport.t.cpp
index 0b573f3..81da009 100644
--- a/tests/daemon/face/tcp-transport.t.cpp
+++ b/tests/daemon/face/tcp-transport.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -177,7 +177,7 @@
   BOOST_REQUIRE_EQUAL(this->limitedIo.run(2, 1_s), LimitedIo::EXCEED_OPS);
 
   auto transportObserver =
-    make_unique<PermanentTcpTransportReconnectObserver>(std::move(sock), std::ref(this->limitedIo));
+    make_unique<PermanentTcpTransportReconnectObserver>(std::move(sock), this->limitedIo);
   BOOST_REQUIRE_EQUAL(transportObserver->getState(), TransportState::UP);
 
   // break the TCP connection
diff --git a/tests/daemon/face/websocket-transport-fixture.hpp b/tests/daemon/face/websocket-transport-fixture.hpp
index bcf9cf9..e49d421 100644
--- a/tests/daemon/face/websocket-transport-fixture.hpp
+++ b/tests/daemon/face/websocket-transport-fixture.hpp
@@ -110,7 +110,7 @@
                                       1_s), LimitedIo::EXCEED_OPS);
 
     face = make_unique<Face>(make_unique<DummyLinkService>(),
-                             make_unique<WebSocketTransport>(serverHdl, std::ref(server), pingInterval));
+                             make_unique<WebSocketTransport>(serverHdl, server, pingInterval));
     transport = static_cast<WebSocketTransport*>(face->getTransport());
     serverReceivedPackets = &static_cast<DummyLinkService*>(face->getLinkService())->receivedPackets;
 
diff --git a/websocketpp b/websocketpp
index c6d7e29..ac4e021 160000
--- a/websocketpp
+++ b/websocketpp
@@ -1 +1 @@
-Subproject commit c6d7e295bf5a0ab9b5f896720cc1a0e0fdc397a7
+Subproject commit ac4e021333675fc80b96eb7be45d218581c897e2
