diff options
author | Arne Juul <arnej@yahooinc.com> | 2023-08-03 09:15:03 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahooinc.com> | 2023-08-03 09:15:03 +0000 |
commit | 6b6f6c45ba955b5b14c359c9f59481866bbd4677 (patch) | |
tree | 227b4bb13588052950c38e1e7ca1a452969481f8 | |
parent | ac375ae9bdb5760bbfd640427b96441bad06a4c8 (diff) |
use atomic swap in handle_add_event
-rw-r--r-- | fnet/src/vespa/fnet/connection.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fnet/src/vespa/fnet/connection.cpp b/fnet/src/vespa/fnet/connection.cpp index f369e2b08c8..a770561344f 100644 --- a/fnet/src/vespa/fnet/connection.cpp +++ b/fnet/src/vespa/fnet/connection.cpp @@ -555,11 +555,12 @@ FNET_Connection::server_adapter() bool FNET_Connection::handle_add_event() { - if (_resolve_handler.load()) { + std::shared_ptr<ResolveHandler> resolve_handler = _resolve_handler.exchange({}); + if (resolve_handler) { auto tweak = [this](vespalib::SocketHandle &handle) { return Owner()->tune(handle); }; - _socket = Owner()->owner().create_client_crypto_socket(_resolve_handler.load()->address.connect(tweak), vespalib::SocketSpec(GetSpec())); + _socket = Owner()->owner().create_client_crypto_socket(resolve_handler->address.connect(tweak), vespalib::SocketSpec(GetSpec())); _ioc_socket_fd = _socket->get_fd(); - _resolve_handler.store({}); + resolve_handler.reset(); } return (_socket && (_socket->get_fd() >= 0)); } |