GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Freeing memory of connection %p.\n", sock);
#endif
+ GNUNET_free (sock->write_buffer);
GNUNET_free (sock);
}
notify, void *notify_cls)
{
size_t temp_size;
+#if !REALLOC
+ char *temp_buf;
+#endif
if (sock->nth.notify_ready != NULL)
return NULL;
GNUNET_assert (notify != NULL);
if ((sock->write_buffer_size < size) && (size < GNUNET_SERVER_MAX_MESSAGE_SIZE))
{
- temp_size = sock->write_buffer_size + size;
+ temp_size = sock->write_buffer_size + size + 1;
if (temp_size >= GNUNET_SERVER_MAX_MESSAGE_SIZE)
temp_size = GNUNET_SERVER_MAX_MESSAGE_SIZE;
-
+#if REALLOC
sock->write_buffer = GNUNET_realloc(sock->write_buffer, temp_size);
+#else
+ temp_buf = GNUNET_malloc(temp_size);
+ memcpy(temp_buf, sock->write_buffer, sock->write_buffer_size);
+ GNUNET_free(sock->write_buffer);
+ sock->write_buffer = temp_buf;
+#endif
sock->write_buffer_size = temp_size;
}
GNUNET_assert (sock->write_buffer_size >= size);
size_t delta;
uint16_t want;
char *ibuf;
+
+#if !REALLOC
+ char *temp_buf;
+#endif
int need_align;
unsigned long offset;
int ret;
#endif
if ((size > mst->curr_buf) && (size < GNUNET_SERVER_MAX_MESSAGE_SIZE)) /* Received bigger message than we can currently handle! */
{
- newsize = mst->curr_buf + size; /* How much space do we need? */
+ newsize = mst->curr_buf + size + 1; /* How much space do we need? */
if (newsize >= GNUNET_SERVER_MAX_MESSAGE_SIZE)
- newsize = GNUNET_SERVER_MAX_MESSAGE_SIZE; /* Check it's not bigger than GNUNET_SERVER_MAX_MESSAGE_SIZE */
-
+ newsize = GNUNET_SERVER_MAX_MESSAGE_SIZE - 1; /* Check it's not bigger than GNUNET_SERVER_MAX_MESSAGE_SIZE */
+#if REALLOC
mst->hdr = GNUNET_realloc(mst->hdr, newsize);
+#else
+ temp_buf = GNUNET_malloc(newsize);
+ memcpy(temp_buf, mst->hdr, mst->curr_buf);
+ GNUNET_free(mst->hdr);
+ mst->hdr = temp_buf;
+#endif
mst->curr_buf = newsize;
}
void
GNUNET_SERVER_mst_destroy (struct GNUNET_SERVER_MessageStreamTokenizer *mst)
{
+ GNUNET_free (mst->hdr);
GNUNET_free (mst);
}