diff --git a/src/connectionmanager.cpp b/src/connectionmanager.cpp
index 2eb0a1c3fea196a3ba9e0605a3448f23623368dc..f49834e59967c93fb069ff360bc8075c75d22576 100644
--- a/src/connectionmanager.cpp
+++ b/src/connectionmanager.cpp
@@ -1041,6 +1041,13 @@ ConnectionManager::Impl::sendChannelRequest(const std::weak_ptr<DeviceInfo>& din
                                             const dht::Value::Id& vid)
 {
     auto channelSock = sock->addChannel(name);
+    if (!channelSock) {
+        if (config_->logger)
+            config_->logger->error("sendChannelRequest failed - cannot create channel");
+        if (auto info = dinfo.lock())
+            info->executePendingOperations(vid, nullptr);
+        return;
+    }
     channelSock->onShutdown([dinfo, name, vid] {
         if (auto info = dinfo.lock())
             info->executePendingOperations(vid, nullptr);