From 232dfc41d41390bfffa75ec2ed065c109fa03a0e Mon Sep 17 00:00:00 2001
From: Reinhard Tartler <siretart@tauware.de>
Date: Sun, 13 Nov 2011 09:27:53 +0100
Subject: Imported nxcomp-3.5.0-2.tar.gz

Summary: Imported nxcomp-3.5.0-2.tar.gz
Keywords:

Imported nxcomp-3.5.0-2.tar.gz
into Git repository
---
 nxcomp/CHANGELOG       |  4 ++++
 nxcomp/Proxy.cpp       | 19 ++++++++++++++++++-
 nxcomp/ServerProxy.cpp |  2 +-
 3 files changed, 23 insertions(+), 2 deletions(-)

(limited to 'nxcomp')

diff --git a/nxcomp/CHANGELOG b/nxcomp/CHANGELOG
index df10c85ce..b7ef0d97a 100644
--- a/nxcomp/CHANGELOG
+++ b/nxcomp/CHANGELOG
@@ -1,5 +1,9 @@
 ChangeLog:
 
+nxcomp-3.5.0-2
+
+- Fixed TR11H02398. Solved a race condition when creating channels.
+
 nxcomp-3.5.0-1
 
 - Opened the 3.5.0 branch based on nxcomp-3.4.0-7.
diff --git a/nxcomp/Proxy.cpp b/nxcomp/Proxy.cpp
index 347dd5add..3b4df7eb6 100644
--- a/nxcomp/Proxy.cpp
+++ b/nxcomp/Proxy.cpp
@@ -1,6 +1,6 @@
 /**************************************************************************/
 /*                                                                        */
-/* Copyright (c) 2001, 2010 NoMachine, http://www.nomachine.com/.         */
+/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/.         */
 /*                                                                        */
 /* NXCOMP, NX protocol compression and NX extensions to this software     */
 /* are copyright of NoMachine. Redistribution and use of the present      */
@@ -1625,6 +1625,23 @@ int Proxy::handleControlFromProxy(const unsigned char *message)
 
   int channelId = *(message + 2);
 
+  //
+  // Check if the channel has been dropped.
+  //
+
+  if (channels_[channelId] != NULL &&
+          (channels_[channelId] -> getDrop() == 1 ||
+              channels_[channelId] -> getClosing() == 1))
+  {
+    #ifdef TEST
+    *logofs << "Proxy: Dropping the descriptor FD#"
+            << getFd(channelId) << " channel ID#"
+            << channelId << ".\n" << logofs_flush;
+    #endif
+
+    handleDrop(channelId);
+  }
+
   //
   // Check if the channel is in the valid
   // range.
diff --git a/nxcomp/ServerProxy.cpp b/nxcomp/ServerProxy.cpp
index 404dd5123..0a72fc301 100644
--- a/nxcomp/ServerProxy.cpp
+++ b/nxcomp/ServerProxy.cpp
@@ -1,6 +1,6 @@
 /**************************************************************************/
 /*                                                                        */
-/* Copyright (c) 2001, 2010 NoMachine, http://www.nomachine.com/.         */
+/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/.         */
 /*                                                                        */
 /* NXCOMP, NX protocol compression and NX extensions to this software     */
 /* are copyright of NoMachine. Redistribution and use of the present      */
-- 
cgit v1.2.3