/** * Closes the connection with the client. */ public void close() { delegate.close(); }
/** * Closes the connection with the client. */ public void close() { delegate.close(); }
private void authenticate(Frame frame, StompServerConnection connection, Handler<AsyncResult<Void>> remainingActions) { if (connection.server().options().isSecured()) { String login = frame.getHeader(Frame.LOGIN); String passcode = frame.getHeader(Frame.PASSCODE); connection.handler().onAuthenticationRequest(connection, login, passcode, ar -> { if (ar.result()) { remainingActions.handle(Future.succeededFuture()); } else { connection.write(Frames.createErrorFrame( "Authentication failed", Headers.create( Frame.VERSION, getSupportedVersionsHeaderLine(connection), Frame.CONTENT_TYPE, "text/plain"), "The connection frame does not contain valid credentials.") ); connection.close(); } }); } else { remainingActions.handle(Future.succeededFuture()); } }
socket.exceptionHandler((exception) -> { LOGGER.error("The STOMP server caught a TCP socket error - closing connection", exception); connection.close(); }); socket.endHandler(v -> connection.close()); parser .errorHandler((exception) -> { connection.write( Frames.createInvalidFrameErrorFrame(exception)); connection.close();
@Override public void handle(ServerFrame serverFrame) { Frame frame = serverFrame.frame(); StompServerConnection connection = serverFrame.connection(); String txId = frame.getHeader(Frame.TRANSACTION); if (txId == null) { Frame error = Frames.createErrorFrame("Missing transaction id", Headers.create(), "BEGIN frames " + "must contain the 'transaction' header."); connection.write(error).close(); return; } if (!Transactions.instance().registerTransaction(connection, txId)) { Frame error = Frames.createErrorFrame("Already existing transaction", Headers.create(Frame.TRANSACTION, txId), "A transaction using the same id is still active."); connection.write(error).close(); return; } Frames.handleReceipt(frame, connection); } }
socket.exceptionHandler((exception) -> { LOGGER.error("The STOMP server caught a WebSocket error - closing connection", exception); connection.close(); }); socket.endHandler(v -> connection.close()); parser .errorHandler((exception) -> { connection.write( Frames.createInvalidFrameErrorFrame(exception)); connection.close();
@Override public void handle(ServerFrame sf) { String txId = sf.frame().getHeader(Frame.TRANSACTION); if (txId == null) { Frame error = Frames.createErrorFrame("Missing transaction id", Headers.create(), "ABORT frames " + "must contain the 'transaction' header."); sf.connection().write(error).close(); return; } if (! Transactions.instance().unregisterTransaction(sf.connection(), txId)) { Frame error = Frames.createErrorFrame("Unknown transaction", Headers.create(Frame.TRANSACTION, txId), "The transaction id is unknown."); sf.connection().write(error).close(); return; } Frames.handleReceipt(sf.frame(), sf.connection()); } }
Headers.create( frame.getHeaders()), "The 'destination' and 'id' headers must be set")); connection.close(); return; Headers.create(frame.getHeaders()), "'id'" + " already used by this connection.")); connection.close(); return; "Invalid subscription", Headers.create(frame.getHeaders()), "Too many subscriptions")); connection.close(); return; "Access denied", Headers.create(frame.getHeaders()), "The destination has been rejected by the server")); connection.close(); return; "Invalid subscription", Headers.create(frame.getHeaders()), "The destination has been rejected by the server")); connection.close(); return;
@Override public void handle(ServerFrame serverFrame) { Frame frame = serverFrame.frame(); StompServerConnection connection = serverFrame.connection(); String txId = frame.getHeader(Frame.TRANSACTION); if (txId == null) { Frame error = Frames.createErrorFrame("Missing transaction id", Headers.create(), "COMMIT frames " + "must contain the " + "'transaction' header."); connection.write(error).close(); return; } Transaction transaction = Transactions.instance().getTransaction(connection, txId); if (transaction == null) { Frame error = Frames.createErrorFrame("Unknown transaction", Headers.create(Frame.TRANSACTION, txId), "The transaction id is unknown."); connection.write(error).close(); return; } replay(connection, transaction.getFrames()); transaction.clear(); Transactions.instance().unregisterTransaction(connection, txId); Frames.handleReceipt(frame, connection); }
Headers.create(frame.getHeaders()), "Invalid ACK frame - the " + "'id' must be set")); connection.close(); return; "Message delivery failed - unknown transaction id in ACK message"); connection.write(errorFrame); connection.close(); return; } else { Transactions.instance().unregisterTransactionsFromConnection(connection); connection.write(errorFrame); connection.close(); return;
"Supported protocol versions are " + getSupportedVersionsHeaderLine(sf.connection())) ); sf.connection().close(); return;
Headers.create(sf.frame().getHeaders()), "Invalid NACK frame - the " + "'id' must be set")); connection.close(); return; "Message delivery failed - unknown transaction id in NACK message"); connection.write(errorFrame); connection.close(); return; } else { Transactions.instance().unregisterTransactionsFromConnection(connection); connection.write(errorFrame); connection.close(); return;
Headers.create(sf.frame().getHeaders()), "Invalid send frame - the " + "'destination' must be set")); sf.connection().close(); return; "Message delivery failed - unknown transaction id"); sf.connection().write(errorFrame); sf.connection().close(); return; } else { Transactions.instance().unregisterTransactionsFromConnection(sf.connection()); sf.connection().write(errorFrame); sf.connection().close(); return; "Message delivery failed - no subscriptions on this destination"); sf.connection().write(errorFrame); sf.connection().close(); return;