Author: gnodet
Date: Fri Feb 6 08:46:53 2009
New Revision: 741471
URL: http://svn.apache.org/viewvc?rev=741471&view=rev
Log:
SSHD-12: Handle [email protected] requests from clients
Modified:
mina/sshd/trunk/src/main/java/org/apache/sshd/server/session/ServerSession.java
Modified:
mina/sshd/trunk/src/main/java/org/apache/sshd/server/session/ServerSession.java
URL:
http://svn.apache.org/viewvc/mina/sshd/trunk/src/main/java/org/apache/sshd/server/session/ServerSession.java?rev=741471&r1=741470&r2=741471&view=diff
==============================================================================
---
mina/sshd/trunk/src/main/java/org/apache/sshd/server/session/ServerSession.java
(original)
+++
mina/sshd/trunk/src/main/java/org/apache/sshd/server/session/ServerSession.java
Fri Feb 6 08:46:53 2009
@@ -66,6 +66,7 @@
private int maxAuthRequests = 20;
private int nbAuthRequests;
private int authTimeout = 10 * 60 * 1000; // 10 minutes in milliseconds
+ private boolean allowMoreSessions = true;
private List<NamedFactory<UserAuth>> userAuthFactories;
@@ -364,6 +365,15 @@
writePacket(buffer);
return;
}
+ if (!allowMoreSessions) {
+ buffer =
createBuffer(SshConstants.Message.SSH_MSG_CHANNEL_OPEN_FAILURE);
+ buffer.putInt(id);
+ buffer.putInt(SshConstants.SSH_OPEN_CONNECT_FAILED);
+ buffer.putString("additional sessions disabled");
+ buffer.putString("");
+ writePacket(buffer);
+ return;
+ }
ServerChannel channel = null;
for (NamedFactory<ServerChannel> factory :
getServerFactoryManager().getChannelFactories()) {
@@ -401,13 +411,15 @@
boolean wantReply = buffer.getBoolean();
if (req.equals("[email protected]")) {
// Relatively standard KeepAlive directive, just wants failure
+ } else if (req.equals("[email protected]")) {
+ allowMoreSessions = false;
} else {
- log.info("Received SSH_MSG_GLOBAL_REQUEST {}" ,req);
- log.error("Unknown global request: {}", req);
+ log.info("Received SSH_MSG_GLOBAL_REQUEST {}" ,req);
+ log.error("Unknown global request: {}", req);
}
if (wantReply){
- buffer = createBuffer(SshConstants.Message.SSH_MSG_REQUEST_FAILURE);
- writePacket(buffer);
+ buffer =
createBuffer(SshConstants.Message.SSH_MSG_REQUEST_FAILURE);
+ writePacket(buffer);
}
}