@deftypefun {int} {gnutls_heartbeat_ping} (gnutls_session_t @var{session}, size_t @var{data_size}, unsigned int @var{max_tries}, unsigned int @var{flags}) @var{session}: is a @code{gnutls_session_t} type. @var{data_size}: is the length of the ping payload. @var{max_tries}: if flags is @code{GNUTLS_HEARTBEAT_WAIT} then this sets the number of retransmissions. Use zero for indefinite (until timeout). @var{flags}: if @code{GNUTLS_HEARTBEAT_WAIT} then wait for pong or timeout instead of returning immediately. This function sends a ping to the peer. If the @code{flags} is set to @code{GNUTLS_HEARTBEAT_WAIT} then it waits for a reply from the peer. Note that it is highly recommended to use this function with the flag @code{GNUTLS_HEARTBEAT_WAIT} , or you need to handle retransmissions and timeouts manually. The total TLS data transmitted as part of the ping message are given by the following formula: MAX(16, @code{data_size} )+@code{gnutls_record_overhead_size()} +3. @strong{Returns:} @code{GNUTLS_E_SUCCESS} on success, otherwise a negative error code. @strong{Since:} 3.1.2 @end deftypefun