1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
@deftypefun {int} {gnutls_handshake} (gnutls_session_t @var{session})
@var{session}: is a @code{gnutls_session_t} structure.
This function does the handshake of the TLS/SSL protocol, and
initializes the TLS connection.
This function will fail if any problem is encountered, and will
return a negative error code. In case of a client, if the client
has asked to resume a session, but the server couldn't, then a
full handshake will be performed.
The non-fatal errors expected by this function are:
@code{GNUTLS_E_INTERRUPTED} , @code{GNUTLS_E_AGAIN} , and @code{GNUTLS_E_WARNING_ALERT_RECEIVED} .
The former two interrupt the handshake procedure due to the lower
layer being interrupted, and the latter because of an alert that
may be sent by a server (it is always a good idea to check any
received alerts). On these errors call this function again, until it
returns 0; cf. @code{gnutls_record_get_direction()} and
@code{gnutls_error_is_fatal()} .
If this function is called by a server after a rehandshake request
then @code{GNUTLS_E_GOT_APPLICATION_DATA} or
@code{GNUTLS_E_WARNING_ALERT_RECEIVED} may be returned. Note that these
are non fatal errors, only in the specific case of a rehandshake.
Their meaning is that the client rejected the rehandshake request or
in the case of @code{GNUTLS_E_GOT_APPLICATION_DATA} it might also mean that
some data were pending.
@strong{Returns:} @code{GNUTLS_E_SUCCESS} on success, otherwise a negative error code.
@end deftypefun
|