Virtual Method
GioTlsConnectionhandshake
since: 2.28
Declaration [src]
gboolean
handshake (
GTlsConnection* conn,
GCancellable* cancellable,
GError** error
)
Description [src]
Attempts a TLS handshake on conn
.
On the client side, it is never necessary to call this method;
although the connection needs to perform a handshake after
connecting (or after sending a “STARTTLS”-type command),
GTlsConnection
will handle this for you automatically when you try
to send or receive data on the connection. You can call
g_tls_connection_handshake()
manually if you want to know whether
the initial handshake succeeded or failed (as opposed to just
immediately trying to use conn
to read or write, in which case,
if it fails, it may not be possible to tell if it failed before or
after completing the handshake), but beware that servers may reject
client authentication after the handshake has completed, so a
successful handshake does not indicate the connection will be usable.
Likewise, on the server side, although a handshake is necessary at the beginning of the communication, you do not need to call this function explicitly unless you want clearer error reporting.
Previously, calling g_tls_connection_handshake()
after the initial
handshake would trigger a rehandshake; however, this usage was
deprecated in GLib 2.60 because rehandshaking was removed from the
TLS protocol in TLS 1.3. Since GLib 2.64, calling this function after
the initial handshake will no longer do anything.
When using a GTlsConnection
created by GSocketClient
, the
GSocketClient
performs the initial handshake, so calling this
function manually is not recommended.
GTlsConnection::accept_certificate
may be emitted during the handshake.
Available since: 2.28
Parameters
cancellable
-
Type:
GCancellable
A
GCancellable
, orNULL
.The argument can be NULL
.The data is owned by the caller of the method. error
-
Type:
GError **
The return location for a recoverable error.
The argument can be NULL
.If the return location is not NULL
, then you must initialize it to aNULL
GError*
.The argument will be left initialized to NULL
by the virtual function if there are no errors.In case of error, the argument will be set to a newly allocated GError
; the caller will take ownership of the data, and be responsible for freeing it.