int gnutls_session_get_data2(gnutls_session_t session, gnutls_datum_t * data);
The returned data are allocated and must be released using gnutls_free().
This function will fail if called prior to handshake completion. In case of false start TLS, the handshake completes only after data have been successfully received from the peer.
Under TLS1.3 session resumption is possible only after a session ticket is received by the client. To ensure that such a ticket has been received use gnutls_session_get_flags() and check for flag GNUTLS_SFLAGS_SESSION_TICKET; if this flag is not set, this function will wait for a new ticket within an estimated roundtrip, and if not received will return dummy data which cannot lead to resumption.
To get notified when new tickets are received by the server use gnutls_handshake_set_hook_function() to wait for GNUTLS_HANDSHAKE_NEW_SESSION_TICKET messages. Each call of gnutls_session_get_data2() after a ticket is received, will return session resumption data corresponding to the last received ticket.
Note that this function under TLS1.3 requires a callback to be set with gnutls_transport_set_pull_timeout_function() for successful operation. There was a bug before 3.6.10 which could make this function fail if that callback was not set. On later versions if not set, the function will return a successful error code, but will return dummy data that cannot lead to a resumption.