private GoAwayFrame newGoAwayFrame(CloseState closeState, int error, String reason) { byte[] payload = null; if (reason != null) { // Trim the reason to avoid attack vectors. reason = reason.substring(0, Math.min(reason.length(), 32)); payload = reason.getBytes(StandardCharsets.UTF_8); } return new GoAwayFrame(closeState, getLastRemoteStreamId(), error, payload); }
@Override public int generate(ByteBufferPool.Lease lease, Frame frame) { GoAwayFrame goAwayFrame = (GoAwayFrame)frame; return generateGoAway(lease, goAwayFrame.getLastStreamId(), goAwayFrame.getError(), goAwayFrame.getPayload()); }
@Override public void onClose(Session session, GoAwayFrame frame, Callback callback) { String reason = frame.tryConvertPayload(); if (reason != null && !reason.isEmpty()) reason = " (" + reason + ")"; getConnection().onSessionFailure(new EofException(String.format("Close %s/%s", ErrorCode.toString(frame.getError(), null), reason)), callback); }
@Override public String toString() { return String.format("%s,%d/%s/%s/%s", super.toString(), lastStreamId, ErrorCode.toString(error, null), tryConvertPayload(), closeState); } }
@Override public String toString() { return String.format("%s,%d/%s/%s/%s", super.toString(), lastStreamId, ErrorCode.toString(error, null), tryConvertPayload(), closeState); } }
@Override public int generate(ByteBufferPool.Lease lease, Frame frame) { GoAwayFrame goAwayFrame = (GoAwayFrame)frame; return generateGoAway(lease, goAwayFrame.getLastStreamId(), goAwayFrame.getError(), goAwayFrame.getPayload()); }
private GoAwayFrame newGoAwayFrame(CloseState closeState, int error, String reason) { byte[] payload = null; if (reason != null) { // Trim the reason to avoid attack vectors. reason = reason.substring(0, Math.min(reason.length(), 32)); payload = reason.getBytes(StandardCharsets.UTF_8); } return new GoAwayFrame(closeState, getLastRemoteStreamId(), error, payload); }
private boolean onGoAway(int lastStreamId, int error, byte[] payload) { GoAwayFrame frame = new GoAwayFrame(lastStreamId, error, payload); reset(); notifyGoAway(frame); return true; }
private boolean onGoAway(int lastStreamId, int error, byte[] payload) { GoAwayFrame frame = new GoAwayFrame(lastStreamId, error, payload); reset(); notifyGoAway(frame); return true; }