From 68d8369974476a78d6a6ca20b937fcd59530690a Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Thu, 3 Oct 2013 18:19:50 +0000 Subject: -removing header to avoid double-encapsulation overhead when going from helper to API --- src/conversation/microphone.c | 8 ++++---- src/conversation/speaker.c | 14 ++++++-------- 2 files changed, 10 insertions(+), 12 deletions(-) (limited to 'src/conversation') diff --git a/src/conversation/microphone.c b/src/conversation/microphone.c index d994db889..2c399c74d 100644 --- a/src/conversation/microphone.c +++ b/src/conversation/microphone.c @@ -74,17 +74,17 @@ process_record_messages (void *cls, const struct GNUNET_MessageHeader *msg) { struct Microphone *mic = cls; + const struct AudioMessage *am; if (ntohs (msg->type) != GNUNET_MESSAGE_TYPE_CONVERSATION_AUDIO) { GNUNET_break (0); return GNUNET_SYSERR; } - // FIXME: unbox here, instead of sending with overhead! - // (see speaker.c::play) + am = (const struct AudioMessage *) msg; mic->rdc (mic->rdc_cls, - ntohs (msg->size), - (const char *) msg); + ntohs (msg->size) - sizeof (struct AudioMessage), + &am[1]); return GNUNET_OK; } diff --git a/src/conversation/speaker.c b/src/conversation/speaker.c index 5fdfff3ee..d67346f1f 100644 --- a/src/conversation/speaker.c +++ b/src/conversation/speaker.c @@ -130,20 +130,18 @@ play (void *cls, const void *data) { struct Speaker *spe = cls; - const struct AudioMessage *am; + char buf[sizeof (struct AudioMessage) + data_size]; + struct AudioMessage *am; if (NULL == spe->playback_helper) { GNUNET_break (0); return; } - // FIXME: box here, instead of expecting boxed data! - if (sizeof (struct AudioMessage) > data_size) - { - GNUNET_break (0); - return; - } - am = (const struct AudioMessage *) data; + am = (struct AudioMessage *) buf; + am->header.size = htons (sizeof (struct AudioMessage) + data_size); + am->header.type = htons (GNUNET_MESSAGE_TYPE_CONVERSATION_AUDIO); + memcpy (&am[1], data, data_size); (void) GNUNET_HELPER_send (spe->playback_helper, &am->header, GNUNET_NO, -- cgit v1.2.3