@Override protected void nextIncomingFrame(Frame frame) { if (frame.isFin() && !incomingContextTakeover) { LOG.debug("Incoming Context Reset"); getInflater().reset(); } super.nextIncomingFrame(frame); }
@Override protected void nextOutgoingFrame(Frame frame, WriteCallback callback, BatchMode batchMode) { if (frame.isFin() && !outgoingContextTakeover) { LOG.debug("Outgoing Context Reset"); getDeflater().reset(); } super.nextOutgoingFrame(frame, callback, batchMode); }
@Override public void setConfig(final ExtensionConfig config) { configRequested = new ExtensionConfig(config); configNegotiated = new ExtensionConfig(config.getName()); for (String key : config.getParameterKeys()) { key = key.trim(); switch (key) { case "client_max_window_bits": case "server_max_window_bits": { // Not supported by Jetty // Don't negotiate these parameters break; } case "client_no_context_takeover": { configNegotiated.setParameter("client_no_context_takeover"); switch (getPolicy().getBehavior()) { case CLIENT: incomingContextTakeover = false; break; case SERVER: outgoingContextTakeover = false; break; } break; } case "server_no_context_takeover": { configNegotiated.setParameter("server_no_context_takeover"); switch (getPolicy().getBehavior()) { case CLIENT: outgoingContextTakeover = false; break; case SERVER: incomingContextTakeover = false; break; } break; } default: { throw new IllegalArgumentException(); } } } super.setConfig(configNegotiated); }