aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReinhard Tartler <siretart@tauware.de>2011-11-13 09:27:53 +0100
committerReinhard Tartler <siretart@tauware.de>2011-11-13 09:27:53 +0100
commit232dfc41d41390bfffa75ec2ed065c109fa03a0e (patch)
tree117e97e14682515b570713a52c3c55ded2fb00da
parent233de71fc954b38f6be286e28e525e50533f9c49 (diff)
downloadnx-libs-nxcomp/3.5.0-2.tar.gz
nx-libs-nxcomp/3.5.0-2.tar.bz2
nx-libs-nxcomp/3.5.0-2.zip
Imported nxcomp-3.5.0-2.tar.gznxcomp/3.5.0-2nxcomp
Summary: Imported nxcomp-3.5.0-2.tar.gz Keywords: Imported nxcomp-3.5.0-2.tar.gz into Git repository
-rw-r--r--nxcomp/CHANGELOG4
-rw-r--r--nxcomp/Proxy.cpp19
-rw-r--r--nxcomp/ServerProxy.cpp2
3 files changed, 23 insertions, 2 deletions
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 */
@@ -1626,6 +1626,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 */