]> source.dussan.org Git - tigervnc.git/commitdiff
Merged the changes from branch/merge-with-vnc-4.1.1, revisions 520:558.
authorConstantin Kaplinsky <const@tightvnc.com>
Thu, 18 May 2006 11:08:21 +0000 (11:08 +0000)
committerConstantin Kaplinsky <const@tightvnc.com>
Thu, 18 May 2006 11:08:21 +0000 (11:08 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@559 3789f03b-4d11-0410-bbf8-ca57d06f2519

1  2 
rfb/VNCSConnectionST.cxx
rfb/VNCSConnectionST.h
rfb/VNCServerST.h
rfb/rfb.dsp
rfb_win32/rfb_win32.dsp
vncviewer/vncviewer.dsp
winvnc/VNCServerWin32.cxx
winvnc/VNCServerWin32.h

index e7bc09f0f8ef8d76c09eae926b9ee0203b7b7991,37fb74472eccdfca8807771e37a57464b93b7fda..fe60e431da0d2113d0b188f4ac3acf1e9c4f09a5
@@@ -31,11 -32,11 +32,11 @@@ static LogWriter vlog("VNCSConnST")
  
  VNCSConnectionST::VNCSConnectionST(VNCServerST* server_, network::Socket *s,
                                     bool reverse)
-   : sock(s), reverseConnection(reverse), server(server_),
-     image_getter(server->useEconomicTranslate),
+   : SConnection(server_->securityFactory, reverse), sock(s), server(server_),
+     updates(false), image_getter(server->useEconomicTranslate),
      drawRenderedCursor(false), removeRenderedCursor(false),
      pointerEventTime(0), accessRights(AccessDefault),
 -    startTime(time(0))
 +    startTime(time(0)), m_pFileTransfer(0)
  {
    setStreams(&sock->inStream(), &sock->outStream());
    peerEndpoint.buf = sock->getPeerEndpoint();
    setSocketTimeouts();
    lastEventTime = time(0);
  
-   // Initialise security
-   CharArray sec_types_str;
-   if (reverseConnection)
-     sec_types_str.buf = rfb::Server::rev_sec_types.getData();
-   else
-     sec_types_str.buf = rfb::Server::sec_types.getData();
-   std::list<int> sec_types = parseSecTypes(sec_types_str.buf);
-   std::list<int>::iterator i;
-   for (i=sec_types.begin(); i!=sec_types.end(); i++) {
-     addSecType(*i);
-   }
+   // Add this client to the VNCServerST
 +  if (server->m_pFTManager != NULL) {
 +    SFileTransfer *pFT = server->m_pFTManager->createObject(sock);
 +    if (pFT != NULL) {
 +      m_pFileTransfer = pFT;
 +    }
 +  }
 +
    server->clients.push_front(this);
  }
  
Simple merge
Simple merge
diff --cc rfb/rfb.dsp
Simple merge
Simple merge
Simple merge
index 5b2adbe8d970b2a79feb6949648eed4b36925ca3,8d681c228b36d7a7eeb73da8480e8be3cca73d9b..3b0e1a0a6d0f9d5fb31f04960d7b6612b0f7540b
@@@ -39,11 -38,6 +39,9 @@@ static LogWriter vlog("VNCServerWin32")
  
  const TCHAR* winvnc::VNCServerWin32::RegConfigPath = _T("Software\\TightVNC\\WinVNC4");
  
- const UINT VNCM_REG_CHANGED = WM_USER;
- const UINT VNCM_COMMAND = WM_USER + 1;
++// FIXME: Move into an .h file?
 +extern const UINT VNCM_FT_DOWNLOAD;
 +
  
  static IntParameter http_port("HTTPPortNumber",
    "TCP/IP port on which the server will serve the Java applet VNC Viewer ", 5800);
@@@ -134,7 -69,8 +73,10 @@@ VNCServerWin32::VNCServerWin32(
    // Register the desktop's event to be handled
    sockMgr.addEvent(desktop.getUpdateEvent(), &desktop);
  
+   // Register the queued command event to be handled
+   sockMgr.addEvent(commandEvent, this);
++
 +  vncServer.setFTManager((rfb::SFileTransferManager *)&m_FTManager);
  }
  
  VNCServerWin32::~VNCServerWin32() {
@@@ -165,74 -166,20 +172,22 @@@ int VNCServerWin32::run() 
  
    DWORD result = 0;
    try {
-     // - Create some managed listening sockets
-     ManagedListener rfb(&sockMgr, &vncServer);
-     ManagedListener http(&sockMgr, httpServer);
+     vlog.debug("Entering message loop");
  
-     // - Continue to operate until WM_QUIT is processed
+     // - Run the server until we're told to quit
      MSG msg;
-     do {
-       // -=- Make sure we're listening on the right ports.
-       rfb.setPort(port_number, localHost);
-       http.setPort(http_port, localHost);
-       // -=- Update the Java viewer's web page port number.
-       httpServer->setRFBport(rfb.sock ? port_number : 0);
-       // -=- Update the TCP address filter for both ports, if open.
-       CharArray pattern;
-       pattern.buf = hosts.getData();
-       if (!localHost) {
-         rfb.setFilter(pattern.buf);
-         http.setFilter(pattern.buf);
-       }
-       // - If there is a listening port then add the address to the
-       //   tray icon's tool-tip text.
-       {
-         const TCHAR* prefix = isServiceProcess() ?
-           _T("VNC Server (Service):") : _T("VNC Server (User):");
-         std::list<char*> addrs;
-         if (rfb.sock)
-           rfb.sock->getMyAddresses(&addrs);
-         else
-           addrs.push_front(strDup("Not accepting connections"));
-         std::list<char*>::iterator i, next_i;
-         int length = _tcslen(prefix)+1;
-         for (i=addrs.begin(); i!= addrs.end(); i++)
-           length += strlen(*i) + 1;
-         TCharArray toolTip(length);
-         _tcscpy(toolTip.buf, prefix);
-         for (i=addrs.begin(); i!= addrs.end(); i=next_i) {
-           next_i = i; next_i ++;
-           TCharArray addr = *i;    // Assumes ownership of string
-           _tcscat(toolTip.buf, addr.buf);
-           if (next_i != addrs.end())
-             _tcscat(toolTip.buf, _T(","));
-         }
-         trayIcon.setToolTip(toolTip.buf);
-       }
-       vlog.debug("Entering message loop");
-       // - Run the server until the registry changes, or we're told to quit
-       while (sockMgr.getMessage(&msg, NULL, 0, 0)) {
-         if (msg.hwnd == 0) {
-           if (msg.message == VNCM_REG_CHANGED)
-             break;
-           if (msg.message == VNCM_COMMAND)
-             doCommand();
-           if (msg.message == VNCM_FT_DOWNLOAD)
-             m_FTManager.processDownloadMsg(msg);
-         }
-         TranslateMessage(&msg);
-         DispatchMessage(&msg);
-       }
-     } while ((msg.message != WM_QUIT) || runServer);
+     int result = 0;
+     while (runServer) {
+       result = sockMgr.getMessage(&msg, NULL, 0, 0);
+       if (result < 0)
+         throw rdr::SystemException("getMessage", GetLastError());
+       if (!isServiceProcess() && (result == 0))
+         break;
++      if (msg.message == VNCM_FT_DOWNLOAD)
++        m_FTManager.processDownloadMsg(msg);
+       TranslateMessage(&msg);
+       DispatchMessage(&msg);
+     }
  
      vlog.debug("Server exited cleanly");
    } catch (rdr::SystemException &s) {
index 9cc0f1ed129d5488870a7ee02bc2a5fc69c91c1b,f05f2c7041d78018748c166fae29cceafd7526b6..579a6a0bf8068741b9ed0736b0505442d77b83a5
  #include <rfb_win32/SDisplay.h>
  #include <rfb_win32/SocketManager.h>
  #include <rfb_win32/TCharArray.h>
 +#include <rfb_win32/SFileTransferManagerWin32.h>
  #include <winvnc/QueryConnectDialog.h>
  #include <winvnc/JavaViewer.h>
//#include <rfb/ListConnInfo.h>
#include <winvnc/ManagedListener.h>
  
  namespace winvnc {
  
      rfb::Thread* hostThread;
      bool runServer;
      bool isDesktopStarted;
-     JavaViewerServer* httpServer;
-     rfb::win32::RegistryReader config;
+     JavaViewerServer httpServer;
      rfb::win32::SocketManager sockMgr;
+     rfb::win32::RegConfig config;
+     ManagedListener rfbSock;
+     ManagedListener httpSock;
+     STrayIconThread* trayIcon;
+     //rfb::SSecurityFactoryStandard securityFactory;
      QueryConnectDialog* queryConnectDialog;
 +    rfb::win32::SFileTransferManagerWin32 m_FTManager;
    };
  
  };