From: Jonathan Bastien-Filiatrault Date: Sat, 15 Aug 2009 21:09:59 +0000 (-0400) Subject: Make _gnutls_handshake_io_send_int accept a mbuffer_st. X-Git-Tag: gnutls_2_11_3~313 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c3b050f46e09be3a400f5002fa3a4ba655da813c;p=thirdparty%2Fgnutls.git Make _gnutls_handshake_io_send_int accept a mbuffer_st. --- diff --git a/lib/gnutls_buffers.c b/lib/gnutls_buffers.c index b1740aa74b..7d5a5d1e23 100644 --- a/lib/gnutls_buffers.c +++ b/lib/gnutls_buffers.c @@ -793,18 +793,9 @@ _gnutls_handshake_io_write_flush (gnutls_session_t session) 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; diff --git a/lib/gnutls_buffers.h b/lib/gnutls_buffers.h index c1d954e29c..6d52f4e8b6 100644 --- a/lib/gnutls_buffers.h +++ b/lib/gnutls_buffers.h @@ -56,6 +56,6 @@ ssize_t _gnutls_handshake_io_recv_int (gnutls_session_t, content_type_t, 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); diff --git a/lib/gnutls_handshake.c b/lib/gnutls_handshake.c index 21c63574b0..c8aace1e75 100644 --- a/lib/gnutls_handshake.c +++ b/lib/gnutls_handshake.c @@ -1135,6 +1135,7 @@ _gnutls_send_handshake (gnutls_session_t session, void *i_data, uint8_t *data; uint32_t datasize; int pos = 0; + mbuffer_st *bufel; if (i_data == NULL && i_datasize == 0) { @@ -1154,12 +1155,13 @@ _gnutls_send_handshake (gnutls_session_t session, void *i_data, /* 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]); @@ -1186,10 +1188,7 @@ _gnutls_send_handshake (gnutls_session_t session, void *i_data, 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; }