MayDay created SSHD-781: --------------------------- Summary: Fail to run the heartbeat task. Key: SSHD-781 URL: https://issues.apache.org/jira/browse/SSHD-781 Project: MINA SSHD Issue Type: Question Affects Versions: 1.4.0 Environment: Any environment Reporter: MayDay
The heartbeat request of sshClient is SSH_MSG_GLOBAL_REQUEST, but the default buffer of heartbeat set false (see ClientConnectService#sendHeartbeat ) {code:java} buf.putBoolean(false); {code} The sshServer reponse the heartbeat by the KeepAliveHandler, then sendGlobalResponse. but if the buffer of heartbeat set false, then the sendGlobalResponse will not reponse sshClient.(see AbstractConnectionService #globalRequest) {code:java} boolean wantReply = buffer.getBoolean(); {code} {code:java} protected IoWriteFuture sendGlobalResponse(Buffer buffer, String req, RequestHandler.Result result, boolean wantReply) throws IOException { if (log.isDebugEnabled()) { log.debug("sendGlobalResponse({})[{}] result={}, want-reply={}", this, req, result, wantReply); } if (RequestHandler.Result.Replied.equals(result) || (!wantReply)) { return new AbstractIoWriteFuture(req, null) { { setValue(Boolean.TRUE); } }; } byte cmd = RequestHandler.Result.ReplySuccess.equals(result) ? SshConstants.SSH_MSG_REQUEST_SUCCESS : SshConstants.SSH_MSG_REQUEST_FAILURE; Session session = getSession(); Buffer rsp = session.createBuffer(cmd, 2); return session.writePacket(rsp); } {code} 1 、if it a Bug? how the sshClient know the server is available when the server don't response. I have test it whth create a client with params ( HEARTBEAT_INTERAL = 60 IDLE_TIMEOUT = 300 NIO_READ_TIMEOUT = 315)and a server, and the client will close seesion after the NIO_READ_TIMEOUT. -- This message was sent by Atlassian JIRA (v6.4.14#64029)