Makes the code more general and not directly tied to specifically TCP sockets.tags/v1.8.90
@@ -99,6 +99,8 @@ namespace network { | |||
// if one is installed. Otherwise, returns 0. | |||
virtual Socket* accept() = 0; | |||
virtual int getMyPort() = 0; | |||
// setFilter() applies the specified filter to all new connections | |||
void setFilter(ConnectionFilter* f) {filter = f;} | |||
int getFd() {return fd;} |
@@ -532,7 +532,7 @@ int TcpListener::getMyPort() { | |||
} | |||
void network::createLocalTcpListeners(std::list<TcpListener*> *listeners, | |||
void network::createLocalTcpListeners(std::list<SocketListener*> *listeners, | |||
int port) | |||
{ | |||
struct addrinfo ai[2]; | |||
@@ -562,7 +562,7 @@ void network::createLocalTcpListeners(std::list<TcpListener*> *listeners, | |||
createTcpListeners(listeners, ai); | |||
} | |||
void network::createTcpListeners(std::list<TcpListener*> *listeners, | |||
void network::createTcpListeners(std::list<SocketListener*> *listeners, | |||
const char *addr, | |||
int port) | |||
{ | |||
@@ -594,11 +594,11 @@ void network::createTcpListeners(std::list<TcpListener*> *listeners, | |||
} | |||
} | |||
void network::createTcpListeners(std::list<TcpListener*> *listeners, | |||
void network::createTcpListeners(std::list<SocketListener*> *listeners, | |||
const struct addrinfo *ai) | |||
{ | |||
const struct addrinfo *current; | |||
std::list<TcpListener*> new_listeners; | |||
std::list<SocketListener*> new_listeners; | |||
initSockets(); | |||
@@ -80,16 +80,17 @@ namespace network { | |||
virtual void shutdown(); | |||
virtual Socket* accept(); | |||
virtual int getMyPort(); | |||
static void getMyAddresses(std::list<char*>* result); | |||
int getMyPort(); | |||
}; | |||
void createLocalTcpListeners(std::list<TcpListener*> *listeners, | |||
void createLocalTcpListeners(std::list<SocketListener*> *listeners, | |||
int port); | |||
void createTcpListeners(std::list<TcpListener*> *listeners, | |||
void createTcpListeners(std::list<SocketListener*> *listeners, | |||
const char *addr, | |||
int port); | |||
void createTcpListeners(std::list<TcpListener*> *listeners, | |||
void createTcpListeners(std::list<SocketListener*> *listeners, | |||
const struct addrinfo *ai); | |||
typedef struct vnc_sockaddr { |
@@ -291,7 +291,7 @@ int main(int argc, char** argv) | |||
signal(SIGINT, CleanupSignalHandler); | |||
signal(SIGTERM, CleanupSignalHandler); | |||
std::list<TcpListener*> listeners; | |||
std::list<SocketListener*> listeners; | |||
try { | |||
TXWindow::init(dpy,"x0vncserver"); | |||
@@ -313,7 +313,7 @@ int main(int argc, char** argv) | |||
const char *hostsData = hostsFile.getData(); | |||
FileTcpFilter fileTcpFilter(hostsData); | |||
if (strlen(hostsData) != 0) | |||
for (std::list<TcpListener*>::iterator i = listeners.begin(); | |||
for (std::list<SocketListener*>::iterator i = listeners.begin(); | |||
i != listeners.end(); | |||
i++) | |||
(*i)->setFilter(&fileTcpFilter); | |||
@@ -335,7 +335,7 @@ int main(int argc, char** argv) | |||
FD_ZERO(&wfds); | |||
FD_SET(ConnectionNumber(dpy), &rfds); | |||
for (std::list<TcpListener*>::iterator i = listeners.begin(); | |||
for (std::list<SocketListener*>::iterator i = listeners.begin(); | |||
i != listeners.end(); | |||
i++) | |||
FD_SET((*i)->getFd(), &rfds); | |||
@@ -387,7 +387,7 @@ int main(int argc, char** argv) | |||
} | |||
// Accept new VNC connections | |||
for (std::list<TcpListener*>::iterator i = listeners.begin(); | |||
for (std::list<SocketListener*>::iterator i = listeners.begin(); | |||
i != listeners.end(); | |||
i++) { | |||
if (FD_ISSET((*i)->getFd(), &rfds)) { |
@@ -199,7 +199,7 @@ int vncIsTCPPortUsed(int port) | |||
{ | |||
try { | |||
// Attempt to create TCPListeners on that port. | |||
std::list<network::TcpListener*> dummy; | |||
std::list<network::SocketListener*> dummy; | |||
network::createTcpListeners (&dummy, 0, port); | |||
while (!dummy.empty()) { | |||
delete dummy.back(); |
@@ -32,7 +32,7 @@ | |||
#include <fcntl.h> | |||
#include <sys/utsname.h> | |||
#include <network/TcpSocket.h> | |||
#include <network/Socket.h> | |||
#include <rfb/Exception.h> | |||
#include <rfb/VNCServerST.h> | |||
#include <rfb/HTTPServer.h> | |||
@@ -107,8 +107,8 @@ public: | |||
XserverDesktop::XserverDesktop(int screenIndex_, | |||
std::list<network::TcpListener*> listeners_, | |||
std::list<network::TcpListener*> httpListeners_, | |||
std::list<network::SocketListener*> listeners_, | |||
std::list<network::SocketListener*> httpListeners_, | |||
const char* name, const rfb::PixelFormat &pf, | |||
int width, int height, | |||
void* fbptr, int stride) | |||
@@ -127,13 +127,13 @@ XserverDesktop::XserverDesktop(int screenIndex_, | |||
if (!httpListeners.empty ()) | |||
httpServer = new FileHTTPServer(this); | |||
for (std::list<TcpListener*>::iterator i = listeners.begin(); | |||
for (std::list<SocketListener*>::iterator i = listeners.begin(); | |||
i != listeners.end(); | |||
i++) { | |||
vncSetNotifyFd((*i)->getFd(), screenIndex, true, false); | |||
} | |||
for (std::list<TcpListener*>::iterator i = httpListeners.begin(); | |||
for (std::list<SocketListener*>::iterator i = httpListeners.begin(); | |||
i != httpListeners.end(); | |||
i++) { | |||
vncSetNotifyFd((*i)->getFd(), screenIndex, true, false); | |||
@@ -386,10 +386,10 @@ void XserverDesktop::handleSocketEvent(int fd, bool read, bool write) | |||
} | |||
bool XserverDesktop::handleListenerEvent(int fd, | |||
std::list<TcpListener*>* sockets, | |||
std::list<SocketListener*>* sockets, | |||
SocketServer* sockserv) | |||
{ | |||
std::list<TcpListener*>::iterator i; | |||
std::list<SocketListener*>::iterator i; | |||
for (i = sockets->begin(); i != sockets->end(); i++) { | |||
if ((*i)->getFd() == fd) |
@@ -44,7 +44,7 @@ namespace rfb { | |||
class VNCServerST; | |||
} | |||
namespace network { class TcpListener; class Socket; class SocketServer; } | |||
namespace network { class SocketListener; class Socket; class SocketServer; } | |||
class XserverDesktop : public rfb::SDesktop, public rfb::FullFramePixelBuffer, | |||
public rdr::Substitutor, | |||
@@ -53,8 +53,8 @@ class XserverDesktop : public rfb::SDesktop, public rfb::FullFramePixelBuffer, | |||
public: | |||
XserverDesktop(int screenIndex, | |||
std::list<network::TcpListener*> listeners_, | |||
std::list<network::TcpListener*> httpListeners_, | |||
std::list<network::SocketListener*> listeners_, | |||
std::list<network::SocketListener*> httpListeners_, | |||
const char* name, const rfb::PixelFormat &pf, | |||
int width, int height, void* fbptr, int stride); | |||
virtual ~XserverDesktop(); | |||
@@ -109,7 +109,7 @@ public: | |||
protected: | |||
bool handleListenerEvent(int fd, | |||
std::list<network::TcpListener*>* sockets, | |||
std::list<network::SocketListener*>* sockets, | |||
network::SocketServer* sockserv); | |||
bool handleSocketEvent(int fd, | |||
network::SocketServer* sockserv, | |||
@@ -122,8 +122,8 @@ private: | |||
int screenIndex; | |||
rfb::VNCServerST* server; | |||
rfb::HTTPServer* httpServer; | |||
std::list<network::TcpListener*> listeners; | |||
std::list<network::TcpListener*> httpListeners; | |||
std::list<network::SocketListener*> listeners; | |||
std::list<network::SocketListener*> httpListeners; | |||
bool directFbptr; | |||
uint32_t queryConnectId; |
@@ -173,8 +173,8 @@ void vncExtensionInit(void) | |||
for (int scr = 0; scr < vncGetScreenCount(); scr++) { | |||
if (!desktop[scr]) { | |||
std::list<network::TcpListener*> listeners; | |||
std::list<network::TcpListener*> httpListeners; | |||
std::list<network::SocketListener*> listeners; | |||
std::list<network::SocketListener*> httpListeners; | |||
if (scr == 0 && vncInetdSock != -1) { | |||
if (network::TcpSocket::isListening(vncInetdSock)) | |||
{ |
@@ -547,7 +547,7 @@ int main(int argc, char** argv) | |||
#endif | |||
if (listenMode) { | |||
std::list<TcpListener*> listeners; | |||
std::list<SocketListener*> listeners; | |||
try { | |||
int port = 5500; | |||
if (isdigit(vncServerName[0])) | |||
@@ -561,7 +561,7 @@ int main(int argc, char** argv) | |||
while (sock == NULL) { | |||
fd_set rfds; | |||
FD_ZERO(&rfds); | |||
for (std::list<TcpListener*>::iterator i = listeners.begin(); | |||
for (std::list<SocketListener*>::iterator i = listeners.begin(); | |||
i != listeners.end(); | |||
i++) | |||
FD_SET((*i)->getFd(), &rfds); | |||
@@ -576,7 +576,7 @@ int main(int argc, char** argv) | |||
} | |||
} | |||
for (std::list<TcpListener*>::iterator i = listeners.begin (); | |||
for (std::list<SocketListener*>::iterator i = listeners.begin (); | |||
i != listeners.end(); | |||
i++) | |||
if (FD_ISSET((*i)->getFd(), &rfds)) { |
@@ -31,7 +31,7 @@ ManagedListener::ManagedListener(SocketManager* mgr) | |||
ManagedListener::~ManagedListener() { | |||
if (!sockets.empty()) { | |||
std::list<network::TcpListener*>::iterator iter; | |||
std::list<network::SocketListener*>::iterator iter; | |||
for (iter = sockets.begin(); iter != sockets.end(); ++iter) | |||
manager->remListener(*iter); | |||
sockets.clear(); | |||
@@ -62,7 +62,7 @@ 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::SocketListener*>::iterator iter; | |||
for (iter = sockets.begin(); iter != sockets.end(); ++iter) | |||
(*iter)->setFilter(filter); | |||
} | |||
@@ -80,7 +80,7 @@ bool ManagedListener::isListening() { | |||
} | |||
void ManagedListener::refresh() { | |||
std::list<network::TcpListener*>::iterator iter; | |||
std::list<network::SocketListener*>::iterator iter; | |||
if (!sockets.empty()) { | |||
for (iter = sockets.begin(); iter != sockets.end(); ++iter) | |||
manager->remListener(*iter); | |||
@@ -107,7 +107,7 @@ void ManagedListener::refresh() { | |||
for (iter = sockets.begin(); iter != sockets.end(); ++iter) | |||
manager->addListener(*iter, server, addrChangeNotifier); | |||
} catch (...) { | |||
std::list<network::TcpListener*>::iterator iter2; | |||
std::list<network::SocketListener*>::iterator iter2; | |||
for (iter2 = sockets.begin(); iter2 != iter; ++iter2) | |||
manager->remListener(*iter2); | |||
for (; iter2 != sockets.end(); ++iter2) |
@@ -45,7 +45,7 @@ namespace winvnc { | |||
protected: | |||
void refresh(); | |||
std::list<network::TcpListener*> sockets; | |||
std::list<network::SocketListener*> sockets; | |||
network::TcpFilter* filter; | |||
rfb::win32::SocketManager* manager; | |||
rfb::win32::SocketManager::AddressChangeNotifier* addrChangeNotifier; |