@deftypefun {int} {gnutls_server_name_get} (gnutls_session_t @var{session}, void * @var{data}, size_t * @var{data_length}, unsigned int * @var{type}, unsigned int @var{indx}) @var{session}: is a @code{gnutls_session_t} type. @var{data}: will hold the data @var{data_length}: will hold the data length. Must hold the maximum size of data. @var{type}: will hold the server name indicator type @var{indx}: is the index of the server_name This function will allow you to get the name indication (if any), a client has sent. The name indication may be any of the enumeration gnutls_server_name_type_t. If @code{type} is GNUTLS_NAME_DNS, then this function is to be used by servers that support virtual hosting, and the data will be a null terminated IDNA ACE string (prior to GnuTLS 3.4.0 it was a UTF-8 string). If @code{data} has not enough size to hold the server name GNUTLS_E_SHORT_MEMORY_BUFFER is returned, and @code{data_length} will hold the required size. @code{indx} is used to retrieve more than one server names (if sent by the client). The first server name has an index of 0, the second 1 and so on. If no name with the given index exists GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE is returned. @strong{Returns:} On success, @code{GNUTLS_E_SUCCESS} (0) is returned, on UTF-8 decoding error @code{GNUTLS_E_IDNA_ERROR} is returned, otherwise a negative error code is returned. @end deftypefun