diff options
author | Pierre Ossman <ossman@cendio.se> | 2015-09-29 15:40:49 +0200 |
---|---|---|
committer | Pierre Ossman <ossman@cendio.se> | 2015-09-29 15:40:49 +0200 |
commit | f7aa3f9bd315ba52d6ee1e7236a580102c8d20b8 (patch) | |
tree | 45d4adcd35e59ec11233d1f6a65b78fad811701f /win/winvnc | |
parent | 7ebce759122eeda383d7d299ee577c75c0f9ac6e (diff) | |
download | tigervnc-f7aa3f9bd315ba52d6ee1e7236a580102c8d20b8.tar.gz tigervnc-f7aa3f9bd315ba52d6ee1e7236a580102c8d20b8.zip |
Return TcpListener pointers rather than objects
It is easier to control object life time and avoid magical socket
duplication by having a single TcpListener object to pass around.
We have to be more careful about deleting the object though.
Diffstat (limited to 'win/winvnc')
-rw-r--r-- | win/winvnc/ManagedListener.cxx | 16 | ||||
-rw-r--r-- | win/winvnc/ManagedListener.h | 2 |
2 files changed, 9 insertions, 9 deletions
diff --git a/win/winvnc/ManagedListener.cxx b/win/winvnc/ManagedListener.cxx index 25d8dc0f..b80f5a16 100644 --- a/win/winvnc/ManagedListener.cxx +++ b/win/winvnc/ManagedListener.cxx @@ -31,9 +31,9 @@ ManagedListener::ManagedListener(SocketManager* mgr) ManagedListener::~ManagedListener() { if (!sockets.empty()) { - std::list<network::TcpListener>::iterator iter; + std::list<network::TcpListener*>::iterator iter; for (iter = sockets.begin(); iter != sockets.end(); ++iter) - manager->remListener(&*iter); + manager->remListener(*iter); sockets.clear(); } delete filter; @@ -62,9 +62,9 @@ void ManagedListener::setFilter(const char* filterStr) { delete filter; filter = new network::TcpFilter(filterStr); if (!sockets.empty() && !localOnly) { - std::list<network::TcpListener>::iterator iter; + std::list<network::TcpListener*>::iterator iter; for (iter = sockets.begin(); iter != sockets.end(); ++iter) - iter->setFilter(filter); + (*iter)->setFilter(filter); } } @@ -80,10 +80,10 @@ bool ManagedListener::isListening() { } void ManagedListener::refresh() { - std::list<network::TcpListener>::iterator iter; + std::list<network::TcpListener*>::iterator iter; if (!sockets.empty()) { for (iter = sockets.begin(); iter != sockets.end(); ++iter) - manager->remListener(&*iter); + manager->remListener(*iter); sockets.clear(); } if (!server) @@ -101,11 +101,11 @@ void ManagedListener::refresh() { if (!sockets.empty()) { if (!localOnly) { for (iter = sockets.begin(); iter != sockets.end(); ++iter) - iter->setFilter(filter); + (*iter)->setFilter(filter); } try { for (iter = sockets.begin(); iter != sockets.end(); ++iter) - manager->addListener(&*iter, server, addrChangeNotifier); + manager->addListener(*iter, server, addrChangeNotifier); } catch (...) { // FIXME: Should unwind what we've added sockets.clear(); diff --git a/win/winvnc/ManagedListener.h b/win/winvnc/ManagedListener.h index 1c7099fe..e8d3c892 100644 --- a/win/winvnc/ManagedListener.h +++ b/win/winvnc/ManagedListener.h @@ -45,7 +45,7 @@ namespace winvnc { protected: void refresh(); - std::list<network::TcpListener> sockets; + std::list<network::TcpListener*> sockets; network::TcpFilter* filter; rfb::win32::SocketManager* manager; rfb::win32::SocketManager::AddressChangeNotifier* addrChangeNotifier; |