flush(__FILL_CALLED_FLUSH); if (BufferUtil.isEmpty(_encryptedOutput))
flush(__FILL_CALLED_FLUSH); if (BufferUtil.isEmpty(_encryptedOutput))
flush(__FILL_CALLED_FLUSH); if (BufferUtil.isEmpty(_encryptedOutput))
flush(__FILL_CALLED_FLUSH); if (BufferUtil.isEmpty(_encryptedOutput))
if (_flushState==FlushState.IDLE && flush(BufferUtil.EMPTY_BUFFER)) continue;
if (_flushState==FlushState.IDLE && flush(BufferUtil.EMPTY_BUFFER)) continue;
flush(BufferUtil.EMPTY_BUFFER); // Send the TLS close message. if (close) getEndPoint().close();
flush(BufferUtil.EMPTY_BUFFER); // Send close handshake ensureFillInterested();
@Override public void shutdownOutput() { boolean ishut = isInputShutdown(); boolean oshut = isOutputShutdown(); if (DEBUG) LOG.debug("{} shutdownOutput: oshut={}, ishut={}", SslConnection.this, oshut, ishut); if (ishut) { // Aggressively close, since inbound close alert has already been processed // and the TLS specification allows to close the connection directly, which // is what most other implementations expect: a FIN rather than a TLS close // reply. If a TLS close reply is sent, most implementations send a RST. getEndPoint().close(); } else if (!oshut) { try { _sslEngine.closeOutbound(); flush(BufferUtil.EMPTY_BUFFER); // Send close handshake SslConnection.this.fillInterested(); // seek reply FIN or RST or close handshake } catch (Exception e) { LOG.ignore(e); getEndPoint().close(); } } }
flush(BufferUtil.EMPTY_BUFFER); // Send the TLS close message. if (close) getEndPoint().close();
@Override public void shutdownOutput() { _sslEngine.closeOutbound(); try { flush(BufferUtil.EMPTY_BUFFER); } catch (IOException e) { LOG.ignore(e); getEndPoint().close(); } }
@Override public void shutdownOutput() { _sslEngine.closeOutbound(); try { flush(BufferUtil.EMPTY_BUFFER); } catch (IOException e) { LOG.ignore(e); getEndPoint().close(); } }