Unverified Commit f0301e51 authored by Joseph Noir's avatar Joseph Noir Committed by GitHub

Merge pull request #1120

Close socket if SSL session initialization fails
parents 22ccaba0 0f47d22e
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include "caf/actor.hpp" #include "caf/actor.hpp"
#include "caf/actor_proxy.hpp" #include "caf/actor_proxy.hpp"
#include "caf/actor_system_config.hpp" #include "caf/actor_system_config.hpp"
#include "caf/detail/socket_guard.hpp"
#include "caf/logger.hpp" #include "caf/logger.hpp"
#include "caf/node_id.hpp" #include "caf/node_id.hpp"
#include "caf/sec.hpp" #include "caf/sec.hpp"
...@@ -217,6 +218,7 @@ public: ...@@ -217,6 +218,7 @@ public:
return false; return false;
auto& dm = acceptor_.backend(); auto& dm = acceptor_.backend();
auto fd = acceptor_.accepted_socket(); auto fd = acceptor_.accepted_socket();
detail::socket_guard sguard{fd};
io::network::nonblocking(fd, true); io::network::nonblocking(fd, true);
auto sssn = make_session(parent()->system(), fd, true); auto sssn = make_session(parent()->system(), fd, true);
if (sssn == nullptr) { if (sssn == nullptr) {
...@@ -226,7 +228,10 @@ public: ...@@ -226,7 +228,10 @@ public:
auto scrb = make_counted<scribe_impl>(dm, fd, std::move(sssn)); auto scrb = make_counted<scribe_impl>(dm, fd, std::move(sssn));
auto hdl = scrb->hdl(); auto hdl = scrb->hdl();
parent()->add_scribe(std::move(scrb)); parent()->add_scribe(std::move(scrb));
return doorman::new_connection(&dm, hdl); auto result = doorman::new_connection(&dm, hdl);
if (result)
sguard.release();
return result;
} }
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment