]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Make _gnutls_handshake_io_send_int accept a mbuffer_st.
authorJonathan Bastien-Filiatrault <joe@x2a.org>
Sat, 15 Aug 2009 21:09:59 +0000 (17:09 -0400)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Thu, 3 Jun 2010 17:39:00 +0000 (19:39 +0200)
lib/gnutls_buffers.c
lib/gnutls_buffers.h
lib/gnutls_handshake.c

index b1740aa74bc9d582ae649d18b7f938c453023f7b..7d5a5d1e23f935aeb11be50ba08c15c9967619f4 100644 (file)
@@ -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;
index c1d954e29ccd3e9ab52ace2bd013ce5a97c5c94c..6d52f4e8b6753e2fbac3563935b522ccee47e375 100644 (file)
@@ -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);
index 21c63574b0adfe1ba59c2891be901c31b0425646..c8aace1e75750a3cd081f008ba4b1c619f4f6460 100644 (file)
@@ -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;
 }