aboutsummaryrefslogtreecommitdiff
path: root/src/testbed
diff options
context:
space:
mode:
authorSree Harsha Totakura <totakura@in.tum.de>2014-03-07 15:21:05 +0000
committerSree Harsha Totakura <totakura@in.tum.de>2014-03-07 15:21:05 +0000
commitcbeb17e103ce6bac1f0b6068e65dd048041903fb (patch)
tree7c9db345911a05ebbea090196b1bca46cee6e93f /src/testbed
parent911ca764e31f74c8f9365dd736c7ae87eb52fa7c (diff)
downloadgnunet-cbeb17e103ce6bac1f0b6068e65dd048041903fb.tar.gz
gnunet-cbeb17e103ce6bac1f0b6068e65dd048041903fb.zip
- Warn upon deleting unsent message.
- Send the message immediately if its size equals to the buffer size.
Diffstat (limited to 'src/testbed')
-rw-r--r--src/testbed/testbed_logger_api.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/testbed/testbed_logger_api.c b/src/testbed/testbed_logger_api.c
index df1fcf27b..dab9d6600 100644
--- a/src/testbed/testbed_logger_api.c
+++ b/src/testbed/testbed_logger_api.c
@@ -352,15 +352,21 @@ void
352GNUNET_TESTBED_LOGGER_disconnect (struct GNUNET_TESTBED_LOGGER_Handle *h) 352GNUNET_TESTBED_LOGGER_disconnect (struct GNUNET_TESTBED_LOGGER_Handle *h)
353{ 353{
354 struct MessageQueue *mq; 354 struct MessageQueue *mq;
355 unsigned int lost;
355 356
356 if (GNUNET_SCHEDULER_NO_TASK != h->flush_completion_task) 357 if (GNUNET_SCHEDULER_NO_TASK != h->flush_completion_task)
357 GNUNET_SCHEDULER_cancel (h->flush_completion_task); 358 GNUNET_SCHEDULER_cancel (h->flush_completion_task);
359 lost = 0;
358 while (NULL != (mq = h->mq_head)) 360 while (NULL != (mq = h->mq_head))
359 { 361 {
360 GNUNET_CONTAINER_DLL_remove (h->mq_head, h->mq_tail, mq); 362 GNUNET_CONTAINER_DLL_remove (h->mq_head, h->mq_tail, mq);
361 GNUNET_free (mq->msg); 363 GNUNET_free (mq->msg);
362 GNUNET_free (mq); 364 GNUNET_free (mq);
365 lost++;
363 } 366 }
367 if (0 != lost)
368 LOG (GNUNET_ERROR_TYPE_WARNING, "Cleaning up %u unsent logger message[s]\n",
369 lost);
364 GNUNET_CLIENT_disconnect (h->client); 370 GNUNET_CLIENT_disconnect (h->client);
365 GNUNET_free (h); 371 GNUNET_free (h);
366} 372}
@@ -383,7 +389,7 @@ GNUNET_TESTBED_LOGGER_write (struct GNUNET_TESTBED_LOGGER_Handle *h,
383 389
384 GNUNET_assert (0 != size); 390 GNUNET_assert (0 != size);
385 GNUNET_assert (NULL != data); 391 GNUNET_assert (NULL != data);
386 GNUNET_assert (size < (BUFFER_SIZE - sizeof (struct GNUNET_MessageHeader))); 392 GNUNET_assert (size <= (BUFFER_SIZE - sizeof (struct GNUNET_MessageHeader)));
387 fit_size = sizeof (struct GNUNET_MessageHeader) + h->bs + size; 393 fit_size = sizeof (struct GNUNET_MessageHeader) + h->bs + size;
388 if ( BUFFER_SIZE < fit_size ) 394 if ( BUFFER_SIZE < fit_size )
389 dispatch_buffer (h); 395 dispatch_buffer (h);
@@ -392,12 +398,15 @@ GNUNET_TESTBED_LOGGER_write (struct GNUNET_TESTBED_LOGGER_Handle *h,
392 h->buf = GNUNET_malloc (size); 398 h->buf = GNUNET_malloc (size);
393 h->bs = size; 399 h->bs = size;
394 memcpy (h->buf, data, size); 400 memcpy (h->buf, data, size);
395 return; 401 goto dispatch_ready;
396 } 402 }
397 h->buf = GNUNET_realloc (h->buf, h->bs + size); 403 h->buf = GNUNET_realloc (h->buf, h->bs + size);
398 memcpy (h->buf + h->bs, data, size); 404 memcpy (h->buf + h->bs, data, size);
399 h->bs += size; 405 h->bs += size;
400 return; 406
407 dispatch_ready:
408 if (BUFFER_SIZE == fit_size)
409 dispatch_buffer (h);
401} 410}
402 411
403 412