summaryrefslogtreecommitdiffstats
path: root/common/rfb/VNCSConnectionST.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'common/rfb/VNCSConnectionST.cxx')
-rw-r--r--common/rfb/VNCSConnectionST.cxx55
1 files changed, 4 insertions, 51 deletions
diff --git a/common/rfb/VNCSConnectionST.cxx b/common/rfb/VNCSConnectionST.cxx
index d9e276a9..50e6d88b 100644
--- a/common/rfb/VNCSConnectionST.cxx
+++ b/common/rfb/VNCSConnectionST.cxx
@@ -56,22 +56,18 @@ VNCSConnectionST::VNCSConnectionST(VNCServerST* server_, network::Socket *s,
{
setStreams(&sock->inStream(), &sock->outStream());
peerEndpoint.buf = sock->getPeerEndpoint();
- VNCServerST::connectionsLog.write(1,"accepted: %s", peerEndpoint.buf);
// Configure the socket
setSocketTimeouts();
lastEventTime = time(0);
-
- server->clients.push_front(this);
}
VNCSConnectionST::~VNCSConnectionST()
{
// If we reach here then VNCServerST is deleting us!
- VNCServerST::connectionsLog.write(1,"closed: %s (%s)",
- peerEndpoint.buf,
- (closeReason.buf) ? closeReason.buf : "");
+ if (closeReason.buf)
+ vlog.info("closing %s: %s", peerEndpoint.buf, closeReason.buf);
// Release any keys the client still had pressed
while (!pressedKeys.empty()) {
@@ -86,9 +82,6 @@ VNCSConnectionST::~VNCSConnectionST()
server->keyEvent(keysym, keycode, false);
}
- // Remove this client from the server
- server->clients.remove(this);
-
delete [] fenceData;
}
@@ -113,10 +106,6 @@ void VNCSConnectionST::close(const char* reason)
else
vlog.debug("second close: %s (%s)", peerEndpoint.buf, reason);
- if (authenticated()) {
- server->lastDisconnectTime = time(0);
- }
-
// Just shutdown the socket and mark our state as closing. Eventually the
// calling code will call VNCServerST's removeSocket() method causing us to
// be deleted.
@@ -445,30 +434,7 @@ void VNCSConnectionST::authSuccess()
void VNCSConnectionST::queryConnection(const char* userName)
{
- // - Authentication succeeded - clear from blacklist
- CharArray name; name.buf = sock->getPeerAddress();
- server->blHosts->clearBlackmark(name.buf);
-
- // - Prepare the desktop that we might be making calls
- server->startDesktop();
-
- // - Special case to provide a more useful error message
- if (rfb::Server::neverShared && !rfb::Server::disconnectClients &&
- server->authClientCount() > 0) {
- approveConnection(false, "The server is already in use");
- return;
- }
-
- // - Does the client have the right to bypass the query?
- if (!(rfb::Server::queryConnect || sock->requiresQuery()) ||
- accessCheck(AccessNoQuery))
- {
- approveConnection(true);
- return;
- }
-
- // - Get the server to display an Accept/Reject dialog, if required
- server->queryConnection(sock, userName);
+ server->queryConnection(this, userName);
}
void VNCSConnectionST::clientInit(bool shared)
@@ -477,21 +443,8 @@ void VNCSConnectionST::clientInit(bool shared)
if (rfb::Server::alwaysShared || reverseConnection) shared = true;
if (!accessCheck(AccessNonShared)) shared = true;
if (rfb::Server::neverShared) shared = false;
- if (!shared) {
- if (rfb::Server::disconnectClients && accessCheck(AccessNonShared)) {
- // - Close all the other connected clients
- vlog.debug("non-shared connection - closing clients");
- server->closeClients("Non-shared connection requested", getSock());
- } else {
- // - Refuse this connection if there are existing clients, in addition to
- // this one
- if (server->authClientCount() > 1) {
- close("Server is already in use");
- return;
- }
- }
- }
SConnection::clientInit(shared);
+ server->clientReady(this, shared);
}
void VNCSConnectionST::setPixelFormat(const PixelFormat& pf)