



@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
