@@ -3132,30 +3132,10 @@ bool CConnman::BindListenPort(const CService& addrBind, bilingual_str& strError,
31323132 return false ;
31333133 }
31343134
3135- #ifdef USE_KQUEUE
3136- if (socketEventsMode == SocketEventsMode::KQueue) {
3137- struct kevent event;
3138- EV_SET (&event, sock->Get (), EVFILT_READ, EV_ADD, 0 , 0 , nullptr );
3139- if (kevent (Assert (m_edge_trig_events)->m_fd , &event, 1 , nullptr , 0 , nullptr ) != 0 ) {
3140- strError = strprintf (_ (" Error: failed to add socket to kqueue fd (kevent returned error %s)" ), NetworkErrorString (WSAGetLastError ()));
3141- LogPrintf (" %s\n " , strError.original );
3142- return false ;
3143- }
3144- }
3145- #endif
3146-
3147- #ifdef USE_EPOLL
3148- if (socketEventsMode == SocketEventsMode::EPoll) {
3149- epoll_event event;
3150- event.data .fd = sock->Get ();
3151- event.events = EPOLLIN;
3152- if (epoll_ctl (Assert (m_edge_trig_events)->m_fd , EPOLL_CTL_ADD, sock->Get (), &event) != 0 ) {
3153- strError = strprintf (_ (" Error: failed to add socket to epoll fd (epoll_ctl returned error %s)" ), NetworkErrorString (WSAGetLastError ()));
3154- LogPrintf (" %s\n " , strError.original );
3155- return false ;
3156- }
3135+ if (m_edge_trig_events && !m_edge_trig_events->AddSocket (sock->Get ())) {
3136+ LogPrintf (" Error: EdgeTriggeredEvents::AddSocket() failed\n " );
3137+ return false ;
31573138 }
3158- #endif
31593139
31603140 vhListenSocket.push_back (ListenSocket (sock->Release (), permissions));
31613141
@@ -3553,23 +3533,15 @@ void CConnman::StopNodes()
35533533 for (CNode *pnode : m_nodes)
35543534 pnode->CloseSocketDisconnect (this );
35553535 }
3556- for (ListenSocket& hListenSocket : vhListenSocket)
3536+ for (ListenSocket& hListenSocket : vhListenSocket) {
35573537 if (hListenSocket.socket != INVALID_SOCKET) {
3558- #ifdef USE_KQUEUE
3559- if (socketEventsMode == SocketEventsMode::KQueue) {
3560- struct kevent event;
3561- EV_SET (&event, hListenSocket.socket , EVFILT_READ, EV_DELETE, 0 , 0 , nullptr );
3562- kevent (Assert (m_edge_trig_events)->m_fd , &event, 1 , nullptr , 0 , nullptr );
3538+ if (m_edge_trig_events && !m_edge_trig_events->RemoveSocket (hListenSocket.socket )) {
3539+ LogPrintf (" EdgeTriggeredEvents::RemoveSocket() failed\n " );
35633540 }
3564- #endif
3565- #ifdef USE_EPOLL
3566- if (socketEventsMode == SocketEventsMode::EPoll) {
3567- epoll_ctl (Assert (m_edge_trig_events)->m_fd , EPOLL_CTL_DEL, hListenSocket.socket , nullptr );
3568- }
3569- #endif
35703541 if (!CloseSocket (hListenSocket.socket ))
35713542 LogPrintf (" CloseSocket(hListenSocket) failed with error %s\n " , NetworkErrorString (WSAGetLastError ()));
35723543 }
3544+ }
35733545
35743546 // clean up some globals (to help leak detection)
35753547 std::vector<CNode*> nodes;
0 commit comments