| | |
| | | public void close(final UnbindRequest request, final String reason) { |
| | | // FIXME: I18N need to internationalize this message. |
| | | Validator.ensureNotNull(request); |
| | | |
| | | close(request, false, Responses.newResult(ResultCode.CLIENT_SIDE_USER_CANCELLED) |
| | | .setDiagnosticMessage(reason != null ? reason : "Connection closed by client")); |
| | | } |
| | |
| | | } |
| | | |
| | | /* |
| | | * Now try cleanly closing the connection if possible. Only send unbind |
| | | * if specified. |
| | | * If this is the final client initiated close then release close the |
| | | * connection and release resources. |
| | | */ |
| | | if (unbindRequest != null) { |
| | | if (notifyClose) { |
| | | final ASN1BufferWriter asn1Writer = ASN1BufferWriter.getWriter(); |
| | | try { |
| | | ldapWriter.unbindRequest(asn1Writer, nextMsgID.getAndIncrement(), unbindRequest); |
| | |
| | | } finally { |
| | | asn1Writer.recycle(); |
| | | } |
| | | factory.getTimeoutChecker().removeConnection(this); |
| | | connection.closeSilently(); |
| | | factory.releaseTransportAndTimeoutChecker(); |
| | | } |
| | | factory.getTimeoutChecker().removeConnection(this); |
| | | connection.closeSilently(); |
| | | factory.releaseTransportAndTimeoutChecker(); |
| | | |
| | | // Notify listeners. |
| | | if (tmpListeners != null) { |