aboutsummaryrefslogtreecommitdiffstats
path: root/unix/xserver/hw/vnc/RFBGlue.cc
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2015-09-29 15:40:49 +0200
committerPierre Ossman <ossman@cendio.se>2015-09-29 15:40:49 +0200
commitf7aa3f9bd315ba52d6ee1e7236a580102c8d20b8 (patch)
tree45d4adcd35e59ec11233d1f6a65b78fad811701f /unix/xserver/hw/vnc/RFBGlue.cc
parent7ebce759122eeda383d7d299ee577c75c0f9ac6e (diff)
downloadtigervnc-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 'unix/xserver/hw/vnc/RFBGlue.cc')
-rw-r--r--unix/xserver/hw/vnc/RFBGlue.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/unix/xserver/hw/vnc/RFBGlue.cc b/unix/xserver/hw/vnc/RFBGlue.cc
index a1507924..9a014f17 100644
--- a/unix/xserver/hw/vnc/RFBGlue.cc
+++ b/unix/xserver/hw/vnc/RFBGlue.cc
@@ -190,9 +190,12 @@ int vncIsTCPPortUsed(int port)
{
try {
// Attempt to create TCPListeners on that port.
- // They go out of scope immediately and are destroyed.
- std::list<network::TcpListener> dummy;
+ std::list<network::TcpListener*> dummy;
network::createTcpListeners (&dummy, 0, port);
+ while (!dummy.empty()) {
+ delete dummy.back();
+ dummy.pop_back();
+ }
} catch (rdr::Exception& e) {
return 1;
}