open fun shutdown()

in core/src/main/java/com/github/shadowsocks/net/LocalSocketListener.kt [68:80]


    open fun shutdown(scope: CoroutineScope) {
        running = false
        localSocket.fileDescriptor?.apply {
            // see also: https://issuetracker.google.com/issues/36945762#comment15
            if (valid()) try {
                Os.shutdown(this, OsConstants.SHUT_RDWR)
            } catch (e: ErrnoException) {
                // suppress fd inactive or already closed
                if (e.errno != OsConstants.EBADF && e.errno != OsConstants.ENOTCONN) throw e.rethrowAsSocketException()
            }
        }
        scope.launch { closeChannel.receive() }
    }