@@ -1862,7 +1862,7 @@ bool CConnman::AddConnection(const std::string& address, ConnectionType conn_typ
18621862 CSemaphoreGrant grant (*semOutbound, true );
18631863 if (!grant) return false ;
18641864
1865- OpenNetworkConnection (CAddress (), false , & grant, address.c_str (), conn_type, /* use_v2transport=*/ false );
1865+ OpenNetworkConnection (CAddress (), false , std::move ( grant) , address.c_str (), conn_type, /* use_v2transport=*/ false );
18661866 return true ;
18671867}
18681868
@@ -2294,9 +2294,9 @@ void CConnman::ProcessAddrFetch()
22942294 m_addr_fetches.pop_front ();
22952295 }
22962296 CAddress addr;
2297- CSemaphoreGrant grant (*semOutbound, true );
2297+ CSemaphoreGrant grant (*semOutbound, /* fTry= */ true );
22982298 if (grant) {
2299- OpenNetworkConnection (addr, false , & grant, strDest.c_str (), ConnectionType::ADDR_FETCH, /* use_v2transport=*/ false );
2299+ OpenNetworkConnection (addr, false , std::move ( grant) , strDest.c_str (), ConnectionType::ADDR_FETCH, /* use_v2transport=*/ false );
23002300 }
23012301}
23022302
@@ -2398,7 +2398,7 @@ void CConnman::ThreadOpenConnections(const std::vector<std::string> connect)
23982398 for (const std::string& strAddr : connect)
23992399 {
24002400 CAddress addr (CService (), NODE_NONE);
2401- OpenNetworkConnection (addr, false , nullptr , strAddr.c_str (), ConnectionType::MANUAL, /* use_v2transport=*/ false );
2401+ OpenNetworkConnection (addr, false , {} , strAddr.c_str (), ConnectionType::MANUAL, /* use_v2transport=*/ false );
24022402 for (int i = 0 ; i < 10 && i < nLoop; i++)
24032403 {
24042404 if (!interruptNet.sleep_for (std::chrono::milliseconds (500 )))
@@ -2703,7 +2703,7 @@ void CConnman::ThreadOpenConnections(const std::vector<std::string> connect)
27032703 const bool count_failures{((int )outbound_ipv46_peer_netgroups.size () + outbound_privacy_network_peers) >= std::min (nMaxConnections - 1 , 2 )};
27042704 // Use BIP324 transport when both us and them have NODE_V2_P2P set.
27052705 const bool use_v2transport (addrConnect.nServices & GetLocalServices () & NODE_P2P_V2);
2706- OpenNetworkConnection (addrConnect, count_failures, & grant, /* strDest=*/ nullptr , conn_type, use_v2transport);
2706+ OpenNetworkConnection (addrConnect, count_failures, std::move ( grant) , /* strDest=*/ nullptr , conn_type, use_v2transport);
27072707 }
27082708 }
27092709}
@@ -2785,16 +2785,16 @@ void CConnman::ThreadOpenAddedConnections()
27852785 bool tried = false ;
27862786 for (const AddedNodeInfo& info : vInfo) {
27872787 if (!info.fConnected ) {
2788- if (!grant. TryAcquire () ) {
2788+ if (!grant) {
27892789 // If we've used up our semaphore and need a new one, let's not wait here since while we are waiting
27902790 // the addednodeinfo state might change.
27912791 break ;
27922792 }
27932793 tried = true ;
27942794 CAddress addr (CService (), NODE_NONE);
2795- OpenNetworkConnection (addr, false , & grant, info.m_params .m_added_node .c_str (), ConnectionType::MANUAL, info.m_params .m_use_v2transport );
2796- if (!interruptNet.sleep_for (std::chrono::milliseconds (500 )))
2797- return ;
2795+ OpenNetworkConnection (addr, false , std::move ( grant) , info.m_params .m_added_node .c_str (), ConnectionType::MANUAL, info.m_params .m_use_v2transport );
2796+ if (!interruptNet.sleep_for (std::chrono::milliseconds (500 ))) return ;
2797+ grant = CSemaphoreGrant (*semAddnode, /* fTry= */ true ) ;
27982798 }
27992799 }
28002800 // Retry every 60 seconds if a connection was attempted, otherwise two seconds
@@ -2804,7 +2804,7 @@ void CConnman::ThreadOpenAddedConnections()
28042804}
28052805
28062806// if successful, this moves the passed grant to the constructed node
2807- void CConnman::OpenNetworkConnection (const CAddress& addrConnect, bool fCountFailure , CSemaphoreGrant *grantOutbound , const char *pszDest, ConnectionType conn_type, bool use_v2transport)
2807+ void CConnman::OpenNetworkConnection (const CAddress& addrConnect, bool fCountFailure , CSemaphoreGrant&& grant_outbound , const char *pszDest, ConnectionType conn_type, bool use_v2transport)
28082808{
28092809 AssertLockNotHeld (m_unused_i2p_sessions_mutex);
28102810 assert (conn_type != ConnectionType::INBOUND);
@@ -2830,8 +2830,7 @@ void CConnman::OpenNetworkConnection(const CAddress& addrConnect, bool fCountFai
28302830
28312831 if (!pnode)
28322832 return ;
2833- if (grantOutbound)
2834- grantOutbound->MoveTo (pnode->grantOutbound );
2833+ pnode->grantOutbound = std::move (grant_outbound);
28352834
28362835 m_msgproc->InitializeNode (*pnode, nLocalServices);
28372836 {
0 commit comments