PRELIMINARY
SYNOPSIS
        #include <tls.h>

        int * tls_query_connection_info(object ob)

DESCRIPTION
        If <ob> does not have a TLS connection or if the connection
        is still being set-up, or if <ob> is not interactive, the efun
        returns 0.

        If <ob> has a TLS connection, tls_query_connection_info()
        returns an array that contains some parameters of <ob>'s
        connection:

          int|string [TLS_CIPHER]: the cipher used
          int        [TLS_COMP]:   the compression used
          int        [TLS_KX]:     the key-exchange used
          int        [TLS_MAC]:    the digest algorithm used
          int|string [TLS_PROT]:   the protocol used

        To translate these numbers into strings, <tls.h> offers a
        number of macros:

          TLS_xxx_TABLE: a literal array of strings describing the
            value in question.
          TLS_xxx_NAME(x): a macro translating the numeric result
            value into a string.

          xxx: CIPHER, COMP, KX, MAC, PROT

HISTORY
        Introduced in LDMud 3.3.474 and following, backported to 3.2.11.

SEE ALSO
	tls_init_connection(E), tls_deinit_connection(E), tls_error(E),
	tls_query_connection_state(E), tls_available(E),
        tls_check_certificate(E), tls_refresh_certs(E)
