Send TLS/IA application payload data. This function has the
similar semantics with send(). The only difference is that it
accepts a GnuTLS session, and uses different error codes.
The TLS/IA protocol is synchronous, so you cannot send more than
one packet at a time. The client always send the first packet.
To finish an application phase in the server, use
gnutls_ia_endphase_send(). The client cannot end an application
phase unilaterally; rather, a client is required to respond with an
endphase of its own if gnutls_ia_recv indicates that the server has
If the EINTR is returned by the internal push function (the default
is send()} 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 same parameters; alternatively you
could provide a NULL pointer for data, and 0 for size.
The number of bytes sent, or a negative error code.