Skip to content

Commit ec99294

Browse files
committed
net: restrict access EdgeTriggerEvents members
- File descriptor creation and destruction are handled within ETE, no reason to expose read-write access to it. - (Un)registerPipe should only be used within WakeupPipe, remove from public view.
1 parent f24520a commit ec99294

File tree

3 files changed

+13
-13
lines changed

3 files changed

+13
-13
lines changed

src/net.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1598,7 +1598,7 @@ void CConnman::SocketEventsKqueue(std::set<SOCKET>& recv_set,
15981598
timeout.tv_nsec = (only_poll ? 0 : SELECT_TIMEOUT_MILLISECONDS % 1000) * 1000 * 1000;
15991599

16001600
int n{-1};
1601-
ToggleWakeupPipe([&](){n = kevent(Assert(m_edge_trig_events)->m_fd, nullptr, 0, events, maxEvents, &timeout);});
1601+
ToggleWakeupPipe([&](){n = kevent(Assert(m_edge_trig_events)->GetFileDescriptor(), nullptr, 0, events, maxEvents, &timeout);});
16021602
if (n == -1) {
16031603
LogPrintf("kevent wait error\n");
16041604
} else if (n > 0) {
@@ -1631,7 +1631,7 @@ void CConnman::SocketEventsEpoll(std::set<SOCKET>& recv_set,
16311631
epoll_event events[maxEvents];
16321632

16331633
int n{-1};
1634-
ToggleWakeupPipe([&](){n = epoll_wait(Assert(m_edge_trig_events)->m_fd, events, maxEvents, only_poll ? 0 : SELECT_TIMEOUT_MILLISECONDS);});
1634+
ToggleWakeupPipe([&](){n = epoll_wait(Assert(m_edge_trig_events)->GetFileDescriptor(), events, maxEvents, only_poll ? 0 : SELECT_TIMEOUT_MILLISECONDS);});
16351635
for (int i = 0; i < n; i++) {
16361636
auto& e = events[i];
16371637
if((e.events & EPOLLERR) || (e.events & EPOLLHUP)) {

src/util/edge.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
#include <logging.h>
88
#include <util/sock.h>
99

10-
#include <assert.h>
11-
1210
#ifdef USE_EPOLL
1311
#include <sys/epoll.h>
1412
#endif

src/util/edge.h

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include <compat.h>
99

10+
#include <assert.h>
1011
#include <cstdint>
1112
#include <string>
1213

@@ -23,37 +24,38 @@ class EdgeTriggeredEvents
2324
~EdgeTriggeredEvents();
2425

2526
bool IsValid() const { return m_valid; }
27+
int GetFileDescriptor() const { assert(m_fd != -1); return m_fd; }
2628

2729
/* Add socket to interest list */
2830
bool AddSocket(SOCKET socket) const;
2931
/* Remove socket from interest list */
3032
bool RemoveSocket(SOCKET socket) const;
3133

32-
/* Register wakeup pipe with EdgeTriggeredEvents instance */
33-
bool RegisterPipe(int wakeup_pipe);
34-
/* Unregister wakeup pipe with EdgeTriggeredEvents instance */
35-
bool UnregisterPipe(int wakeup_pipe);
36-
3734
/* Register events for socket */
3835
bool RegisterEvents(SOCKET socket) const;
3936
/* Unregister events for socket */
4037
bool UnregisterEvents(SOCKET socket) const;
4138

39+
private:
40+
friend class WakeupPipe;
41+
/* Register wakeup pipe with EdgeTriggeredEvents instance */
42+
bool RegisterPipe(int wakeup_pipe);
43+
/* Unregister wakeup pipe with EdgeTriggeredEvents instance */
44+
bool UnregisterPipe(int wakeup_pipe);
45+
4246
private:
4347
bool RegisterEntity(int entity, std::string entity_name) const;
4448
bool UnregisterEntity(int entity, std::string entity_name) const;
4549

46-
public:
47-
/* File descriptor used to interact with events mode */
48-
int m_fd{-1};
49-
5050
private:
5151
/* Flag set if pipe has been registered with instance */
5252
bool m_pipe_registered{false};
5353
/* Instance validity flag set during construction */
5454
bool m_valid{false};
5555
/* Flag for storing selected socket events mode */
5656
SocketEventsMode m_mode;
57+
/* File descriptor used to interact with events mode */
58+
int m_fd{-1};
5759
};
5860

5961
#endif /* BITCOIN_UTIL_EDGE_H */

0 commit comments

Comments
 (0)