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 /unix/xserver/hw/vnc/RFBGlue.cc | |
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 'unix/xserver/hw/vnc/RFBGlue.cc')
-rw-r--r-- | unix/xserver/hw/vnc/RFBGlue.cc | 7 |
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; } |