You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ke...@apache.org on 2013/07/11 01:39:25 UTC
git commit: updated refs/heads/4.1 to 0cf3b75
Updated Branches:
refs/heads/4.1 c301734e2 -> 0cf3b75c2
CLOUDSTACK-3456: proactively close XAPI initiated console session from console proxy to avoid DoS behave to XS host
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/0cf3b75c
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/0cf3b75c
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/0cf3b75c
Branch: refs/heads/4.1
Commit: 0cf3b75c2f20664a7a0cd972fd51277bf3519355
Parents: c301734
Author: Kelven Yang <ke...@gmail.com>
Authored: Mon Jun 10 17:46:22 2013 -0700
Committer: Kelven Yang <ke...@gmail.com>
Committed: Wed Jul 10 14:01:26 2013 -0700
----------------------------------------------------------------------
.../src/com/cloud/consoleproxy/ConsoleProxyGCThread.java | 5 ++++-
.../src/com/cloud/consoleproxy/ConsoleProxyVncClient.java | 5 +++--
.../src/com/cloud/consoleproxy/vnc/VncClientPacketSender.java | 4 +++-
.../src/com/cloud/consoleproxy/vnc/VncServerPacketReceiver.java | 4 +++-
4 files changed, 13 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0cf3b75c/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyGCThread.java
----------------------------------------------------------------------
diff --git a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyGCThread.java b/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyGCThread.java
index 7f82a96..9e637a5 100644
--- a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyGCThread.java
+++ b/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyGCThread.java
@@ -64,6 +64,7 @@ public class ConsoleProxyGCThread extends Thread {
public void run() {
boolean bReportLoad = false;
+ long lastReportTick = System.currentTimeMillis();
while (true) {
cleanupLogging();
bReportLoad = false;
@@ -95,10 +96,12 @@ public class ConsoleProxyGCThread extends Thread {
client.closeClient();
}
- if(bReportLoad) {
+ if(bReportLoad || System.currentTimeMillis() - lastReportTick > 5000) {
// report load changes
String loadInfo = new ConsoleProxyClientStatsCollector(connMap).getStatsReport();
ConsoleProxy.reportLoadInfo(loadInfo);
+ lastReportTick = System.currentTimeMillis();
+
if(s_logger.isDebugEnabled())
s_logger.debug("Report load change : " + loadInfo);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0cf3b75c/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyVncClient.java
----------------------------------------------------------------------
diff --git a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyVncClient.java b/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyVncClient.java
index 6a473b5..5c838a5 100644
--- a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyVncClient.java
+++ b/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyVncClient.java
@@ -46,7 +46,7 @@ public class ConsoleProxyVncClient extends ConsoleProxyClientBase {
private VncClient client;
private Thread worker;
- private boolean workerDone = false;
+ private volatile boolean workerDone = false;
private int lastModifierStates = 0;
private int lastPointerMask = 0;
@@ -80,7 +80,7 @@ public class ConsoleProxyVncClient extends ConsoleProxyClientBase {
String tunnelUrl = getClientParam().getClientTunnelUrl();
String tunnelSession = getClientParam().getClientTunnelSession();
- for(int i = 0; i < 15; i++) {
+ for(int i = 0; i < 15 && !workerDone; i++) {
try {
if(tunnelUrl != null && !tunnelUrl.isEmpty() && tunnelSession != null && !tunnelSession.isEmpty()) {
URI uri = new URI(tunnelUrl);
@@ -136,6 +136,7 @@ public class ConsoleProxyVncClient extends ConsoleProxyClientBase {
@Override
public void closeClient() {
+ workerDone = true;
if(client != null)
client.shutdown();
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0cf3b75c/console-proxy/src/com/cloud/consoleproxy/vnc/VncClientPacketSender.java
----------------------------------------------------------------------
diff --git a/console-proxy/src/com/cloud/consoleproxy/vnc/VncClientPacketSender.java b/console-proxy/src/com/cloud/consoleproxy/vnc/VncClientPacketSender.java
index d27b76d..ea15a60 100644
--- a/console-proxy/src/com/cloud/consoleproxy/vnc/VncClientPacketSender.java
+++ b/console-proxy/src/com/cloud/consoleproxy/vnc/VncClientPacketSender.java
@@ -77,8 +77,10 @@ public class VncClientPacketSender implements Runnable, PaintNotificationListene
s_logger.error("Unexpected exception: ", e);
if (connectionAlive) {
closeConnection();
- vncConnection.shutdown();
}
+ } finally {
+ s_logger.info("Sending thread exit processing, shutdown connection");
+ vncConnection.shutdown();
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0cf3b75c/console-proxy/src/com/cloud/consoleproxy/vnc/VncServerPacketReceiver.java
----------------------------------------------------------------------
diff --git a/console-proxy/src/com/cloud/consoleproxy/vnc/VncServerPacketReceiver.java b/console-proxy/src/com/cloud/consoleproxy/vnc/VncServerPacketReceiver.java
index 57c8ff8..2bd2c6f 100644
--- a/console-proxy/src/com/cloud/consoleproxy/vnc/VncServerPacketReceiver.java
+++ b/console-proxy/src/com/cloud/consoleproxy/vnc/VncServerPacketReceiver.java
@@ -90,8 +90,10 @@ public class VncServerPacketReceiver implements Runnable {
s_logger.error("Unexpected exception: ", e);
if (connectionAlive) {
closeConnection();
- vncConnection.shutdown();
}
+ } finally {
+ s_logger.info("Receiving thread exit processing, shutdown connection");
+ vncConnection.shutdown();
}
}