---
name: "gnutls_record_send"
section: "3"
platform: "linux"
package: "gnutls"
version: "3.8.13-3"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/gnutls_record_send"
---

# gnutls\_record\_send(3)

API function

## NAME

gnutls\_record\_send - API function

## SYNOPSIS

**#include \<gnutls/gnutls.h\>**

**ssize\_t gnutls\_record\_send(gnutls\_session\_t** *session***, const void \*** *data***, size\_t** *data\_size***);**

## ARGUMENTS

- gnutls\_session\_t session

  is a **gnutls\_session\_t** type.

- const void \* data

  contains the data to send

- size\_t data\_size

  is the length of the data

## DESCRIPTION

This function has the similar semantics with **send()**.  The only difference is that it accepts a GnuTLS session, and uses different error codes. Note that if the send buffer is full, **send()** will block this function.  See the **send()** documentation for more information.

You can replace the default push function which is **send()**, by using **gnutls\_transport\_set\_push\_function()**.

If the EINTR is returned by the internal push function then **GNUTLS\_E\_INTERRUPTED** will be returned. If **GNUTLS\_E\_INTERRUPTED** or **GNUTLS\_E\_AGAIN** is returned, you must call this function again with the exact same parameters, or provide a **NULL** pointer for  *data* and 0 for  *data\_size* , in order to write the same data as before. If you wish to discard the previous data instead of retrying, you must call **gnutls\_record\_discard\_queued()** before calling this function with different parameters. Note that the latter works only on special transports (e.g., UDP). cf. **gnutls\_record\_get\_direction()**.

Note that in DTLS this function will return the **GNUTLS\_E\_LARGE\_PACKET** error code if the send data exceed the data MTU value - as returned by **gnutls\_dtls\_get\_data\_mtu()**. The errno value EMSGSIZE also maps to **GNUTLS\_E\_LARGE\_PACKET**. Note that since 3.2.13 this function can be called under cork in DTLS mode, and will refuse to send data over the MTU size by returning **GNUTLS\_E\_LARGE\_PACKET**.

## RETURNS

The number of bytes sent, or a negative error code.  The number of bytes sent might be less than  *data\_size* .  The maximum number of bytes this function can send in a single call depends on the negotiated maximum record size.

## REPORTING BUGS

Report bugs to \<bugs@gnutls.org\>.\
 Home page: https://www.gnutls.org

## COPYRIGHT

Copyright © 2001-2023 Free Software Foundation, Inc., and others.\
 Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.

## SEE ALSO

The full documentation for **gnutls** is maintained as a Texinfo manual. If the /usr/share/doc/gnutls/ directory does not contain the HTML form visit

- https://www.gnutls.org/manual/
