ssize_t
_gnutls_handshake_io_send_int (gnutls_session_t session,
gnutls_handshake_description_t htype,
- const void *iptr, size_t n)
+ mbuffer_st *bufel)
{
mbuffer_head_st * const send_buffer = &session->internals.handshake_send_buffer;
- mbuffer_st *bufel = _gnutls_mbuffer_alloc(n);
-
- if(bufel == NULL)
- {
- gnutls_assert ()
- return GNUTLS_E_MEMORY_ERROR;
- }
-
- memcpy(bufel->msg.data, iptr, n);
_gnutls_mbuffer_enqueue (send_buffer, bufel);
session->internals.handshake_send_buffer_htype = htype;
size_t);
ssize_t _gnutls_handshake_io_send_int (gnutls_session_t,
gnutls_handshake_description_t,
- const void *, size_t);
+ mbuffer_st *bufel);
ssize_t _gnutls_io_write_flush (gnutls_session_t session);
ssize_t _gnutls_handshake_io_write_flush (gnutls_session_t session);
uint8_t *data;
uint32_t datasize;
int pos = 0;
+ mbuffer_st *bufel;
if (i_data == NULL && i_datasize == 0)
{
/* first run */
datasize = i_datasize + HANDSHAKE_HEADER_SIZE;
- data = gnutls_malloc (datasize);
- if (data == NULL)
+ bufel = _gnutls_mbuffer_alloc (datasize);
+ if (bufel == NULL)
{
gnutls_assert ();
return GNUTLS_E_MEMORY_ERROR;
}
+ data = bufel->msg.data;
data[pos++] = (uint8_t) type;
_gnutls_write_uint24 (i_datasize, &data[pos]);
session->internals.last_handshake_out = type;
- ret =
- _gnutls_handshake_io_send_int (session, type, data, datasize);
-
- gnutls_free (data);
+ ret = _gnutls_handshake_io_send_int (session, type, bufel);
return ret;
}